人们经常在SO上的python问题中找到这种类型的表达式。只是访问可迭代的所有项目
for i in range(len(a)):
print(a[i])
这只是一种难以理解的写作方式:
for e in a:
print(e)
或分配给可迭代的元素:
for i in range(len(a)):
a[i] = a[i] * 2
哪个应该和:
for i, e in enumerate(a):
a[i] = e * 2
# Or if it isn't too expensive to create a new iterable
a = [e * 2 for e in a]
或用于过滤索引:
for i in range(len(a)):
if i % 2 == 1: continue
print(a[i])
可以这样表示:
for e in a [::2]:
print(e)
或者,当您只需要列表的长度而不是列表内容时:
for _ in range(len(a)):
doSomethingUnrelatedToA()
可能是:
for _ in a:
doSomethingUnrelatedToA()
在蟒蛇我们enumerate
,切片,filter
,sorted
,等...至于蟒蛇for
结构旨在遍历iterables不仅范围的整数,是你需要有真实世界的使用情况in range(len(a))
?
range(len(a))
通常是对Python经验不足的人(尽管不一定对编程有普遍的了解)。