菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 基础教程
(追記) (追記ここまで)

Python range() 函数用法

Python 内置函数 Python 内置函数

python2.x range() 函数可创建一个整数列表,一般用在 for 循环中。

注意:Python3 range() 返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表,具体可查阅 Python3 range() 用法说明

函数语法

range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

实例

>>>range(10)# 从 0 开始到 9[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11)# 从 1 开始到 10[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5)# 步长为 5[0, 5, 10, 15, 20, 25] >>> range(0, 10, 3)# 步长为 3[0, 3, 6, 9] >>> range(0, -10, -1)# 负数[0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0)[] >>> range(1, 0)[]

以下是 range 在 for 中的使用,循环出runoob 的每个字母:

>>>x = 'runoob' >>> foriinrange(len(x)) : ... print(x[i]) ... runoob

Python 内置函数 Python 内置函数

AI 思考中...

6 篇笔记 写笔记

  1. #0

    northxw

    nor***[email protected]

    124

    Python3.x 中 range() 函数返回的结果是一个整数序列的对象,而不是列表。

    >>> type(range(10))
    <class 'range'>

    当你 help(range) 时会看到:

    Return an object...

    所以,不是列表,但是可以利用 list 函数返回列表,即:

    >>> list(range(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    northxw

    nor***[email protected]

    9年前 (2017年10月20日)
  2. #0

    uswood

    usw***@163.com

    33

    在尝试将 range 生成的列表(感谢楼上的笔记)作为可变长参数元组传入函数的时候,发现列表会作为一个元组元素传入,因此要在使用的时候使用嵌套的 for 来遍历两次。

    代码如下:

    def sumall(*argu):
     """函数:计算所有传入列表数据的和。
     *argu:可变长参数元组,名字可任意,argu为惯例;传入后会成为元组的元素。
     return:计算的和。
     """
     total = 0
     for i in argu:
     for li in i:
     total += li
     print(total)
    num = list(range(1,101))
    sumall(num)

    因为这里演示的是计算列表,如果只是计算数字,只需要 for 遍历一次而不是 for两次。

    因为多个参数作为可变长参数元组传入后,是一个元组,当把列表传入后,就会成为一个元素 ([1,2,3],) 所以使用两次遍历。

    如果继续编写,可以添加 isinstance(argu,list) 函数来判断元素是否为列表,用分支分别处理不同的元素。

    uswood

    usw***@163.com

    8年前 (2018年07月12日)
  3. #0

    Asterism2012

    159***[email protected]

    35

    倒序

    >>> range(100,19,-5)
    [100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25, 20]

    Asterism2012

    159***[email protected]

    8年前 (2018年08月07日)
  4. #0

    you33me

    zho***@wangsu.com

    31

    range(1,10) 是 1-9 :

    >>> range(1,10)
    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    range(10) 是 0-9 :

    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    you33me

    zho***@wangsu.com

    8年前 (2018年12月21日)
  5. #0

    zoutao

    isz***[email protected]

    15

    range 的列表解析:

    print([i for i in range(10)])
    # 用来做计算
    print([x*x for x in range(2,8)])
    # 两层循环,生成全排列的list
    print(type([m + n for m in 'ABC' for n in 'XYZ']))
    print([m + n for m in 'ABC' for n in 'XYZ'])
    # 这种方式生成单个strfor m in 'ABC':
    for n in 'XYZ':
     print(type(m + n))
     print(m + n)
    # 列出指定目录下的所有文件和目录
    print()
    import os
    print([d for d in os.listdir('D:/')])

    zoutao

    isz***[email protected]

    7年前 (2019年11月12日)
  6. #0

    sleepybear

    543***[email protected]

    9

    range 生成的列表,列表中的元素相互独立,即地址各不相同,这与 * 号重复列表生成的列表大相径庭,前者类似深拷贝,后者则纯粹是浅拷贝,如下所示:

    a = [0] * 3
    print u'这是浅拷贝'
    for num in a: 
     print id(num)
    b = range(3)
    print u'这是深拷贝'
    for num in b:
     print id(num)

    结果如下:

    这是浅拷贝
    54813568
    54813568
    54813568
    这是深拷贝
    54813568
    54813544
    54813520

    sleepybear

    543***[email protected]

    6年前 (2020年12月18日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /