Python编程range(Python编程基础)

http://www.itjxue.com  2023-01-28 00:04  来源:未知  点击次数: 

python中range()函数用法

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

注意: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'

for i in range(len(x)) :

... print(x[i])

...

r

u

n

o

o

b

python内置函数range

range(a,b,c):从a开始(包含)到b结束(不包含)中以c为单位长度的数。

例子:range(1,5,2):就是1和3

range(8,15,3):就是8和11和14

range(3,5):就是3和4

range(6,10):就是6和7和8和9

range(4):就是0和1和2和3

注意:range是个数据类型,不是列表,需要用list()转化为列表或直接写for循环

Python内置函数range

range 类型表示不可变的数字序列,通常用于在 for 循环中循环指定的次数。

range 构造器的参数必须为整数(可以是内置的 int 或任何实现了 __index__ 特殊方法的对象)。 如果省略 step 参数,其默认值为 1 。 如果省略 start 参数,其默认值为 0 ,如果 step 为零则会引发 ValueError。

如果 step 为正值,确定 range r 内容的公式为 r[i] = start + step*i 其中 i = 0 且 r[i] stop 。

如果 step 为负值,确定 range 内容的公式仍然为 r[i] = start + step*i ,但限制条件改为 i = 0 且 r[i] stop .

如果 r[0] 不符合值的限制条件,则该 range 对象为空。 range 对象确实支持负索引,但是会将其解读为从正索引所确定的序列的末尾开始索引。

元素绝对值大于 sys.maxsize 的 range 对象是被允许的,但某些特性 (例如 len()) 可能引发 OverflowError。

一些 range 对象的例子:

range 对象实现了 一般 序列的所有操作,但拼接和重复除外(这是由于 range 对象只能表示符合严格模式的序列,而重复和拼接通常都会违反这样的模式)。

start

start 形参的值 (如果该形参未提供则为 0 )

stop

stop 形参的值

step

step 形参的值 (如果该形参未提供则为 1 )

range 类型相比常规 list 或 tuple 的优势在于一个 range 对象总是占用固定数量的(较小)内存,不论其所表示的范围有多大(因为它只保存了 start , stop 和 step 值,并会根据需要计算具体单项或子范围的值)。

range 对象实现了 collections.abc.Sequence ABC,提供如包含检测、元素索引查找、切片等特性,并支持负索引

使用 == 和 != 检测 range 对象是否相等是将其作为序列来比较。 也就是说,如果两个 range 对象表示相同的值序列就认为它们是相等的。 (请注意比较结果相等的两个 range 对象可能会具有不同的 start, stop 和 step 属性,例如 range(0) == range(2, 1, 3) 而 range(0, 3, 2) == range(0, 4, 2) 。)

在 3.2 版更改: 实现 Sequence ABC。 支持切片和负数索引。 使用 int 对象在固定时间内进行成员检测,而不是逐一迭代所有项。

在 3.3 版更改: 定义 '==' 和 '!=' 以根据 range 对象所定义的值序列来进行比较(而不是根据对象的标识)。

3.3 新版功能: start, stop 和 step 属性。

(责任编辑:IT教学网)

更多