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でenumerate
、スライス、filter
、sorted
、Pythonの等...としてfor
構築物は反復可能オブジェクトを反復するために意図されているだけでなくは整数の範囲を、あなたが必要があり、現実世界のユースケースはin range(len(a))
?
range(len(a))
は通常、Pythonにかなり不慣れな人だと思います(ただし、必ずしも一般的なプログラミングに慣れているとは限りません)。