一个经常在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()
在python中我们有枚举,切片,过滤,排序等等。由于python的结构旨在迭代迭代,而不仅仅是整数范围,有真实世界的用例,你需要在range(len(a ))?