LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 216|回复: 0

range() 函数

[复制链接]
发表于 2023-12-22 16:53:40 | 显示全部楼层 |阅读模式

range() 函数


内置函数 range() 用于生成等差数列:

>>>
for i in range(5):
    print(i)

0
1
2
3
4
生成的序列绝不会包括给定的终止值;range(10) 生成 10 个值——长度为 10 的序列的所有合法索引。range 可以不从 0 开始,且可以按给定的步长递增(即使是负数步长):

>>>
list(range(5, 10))
[5, 6, 7, 8, 9]

list(range(0, 10, 3))
[0, 3, 6, 9]

list(range(-10, -100, -30))
[-10, -40, -70]
要按索引迭代序列,可以组合使用 range() 和 len():

>>>
a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
    print(i, a[i])

0 Mary
1 had
2 a
3 little
4 lamb
不过大多数情况下 enumerate() 函数很方便,详见 循环的技巧。

如果直接打印一个 range 会发生意想不到的事情:

>>>
range(10)
range(0, 10)
range() 返回的对象在很多方面和列表的行为一样,但其实它和列表不一样。该对象只有在被迭代时才一个一个地返回所期望的列表项,并没有真正生成过一个含有全部项的列表,从而节省了空间。

这种对象称为可迭代对象 iterable,适合作为需要获取一系列值的函数或程序构件的参数。for 语句就是这样的程序构件;以可迭代对象作为参数的函数例如 sum():

>>>
sum(range(4))  # 0 + 1 + 2 + 3
6
之后我们会看到更多返回可迭代对象,或以可迭代对象作为参数的函数。在 数据结构 这一章中,我们将讨论 list() 的更多细节。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表