for语句,range() 函数

for 语句在任意序列 (列表或者字符串) 中迭代时, 总是按照元素在序列中的出现顺序依次迭代.

2 ... a = ['cat', 'window', 'defenestrate']
3 >>> for x in a:
4 ... print(x, len(x))
5 ...
6 cat 3
7 window 6
8 defenestrate 12

 

如果你需要在循环体内修改你正迭代的序列 (例如说,复制序列中选定的项), 你最好是制作一个副本. 在序列上的迭代并不会自动隐式地创建
一个副本. 切片标记让这种操作十分方便:

1 >>> for x in a[:]: # 制 造 整 个 列 表 的 切 片 复 本
2 ... if len(x) > 6: a.insert(0, x)
3 ...
4 >>> a
5 ['defenestrate', 'cat', 'window', 'defenestrate']

 

如果需要一个数值序列, 使用内建函式 range() 会很方便. 它产生等
差级数序列:

1 >>> for i in range(5):
2 ... print(i)
3 ...
4 0
5 1
6 2
7 3
8 4

给出的终止点不会在生成的序列里; range(10) 生成 10 个值, 组成一个

长度为 10 的合法序列. 可以让 range 的起始初值定为另一个数, 也可以指

定一个不同的增量 (甚至可以为负; 有时这被称为’ 步长’):

1 range(5, 10)
2 5 through 9
3
4 range(0, 10, 3)
5 0, 3, 6, 9
6
7 range(-10, -100, -30)
8 -10, -40, -70


要对一个序列的索引进行迭代的话, 组合使用 range() 和 len():

1 >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
2 >>> for i in range(len(a)):
3 ... print(i, a[i])
4 ...
5 0 Mary
6 1 had
7 2 a
8 3 little
9 4 lamb

多数情况中, 用 enumerate() 函式更加方便, 参见遍历技巧.

直接打印 range 的时候会发生奇怪的事情:

1 >>> print(range(10))
2 range(0, 10)

在许多情况下, range() 的返回值和列表的行为类似, 但是事实上并非

如此. range() 是这样一个对象: 当你对它的返回值进行迭代时, 它确实返
回了一些连续的项, 但是它并没有创建这样一个列表, 并因此节省了空间.

转载于:https://www.cnblogs.com/wmh33/p/10056153.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值