040-インデックス反復

1475 ワード

Pythonでは、反復は常に要素自体を取り出し、要素のインデックスではありません.
秩序化された集合の場合、要素にはインデックスがあります.時々、forループでインデックスを手に入れたいのですが、どうすればいいですか?
メソッドはenumerate()関数を使用します.
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
...     print index, '-', name
... 
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

enumerate()関数を使用すると、forループでインデックスindexと要素nameを同時にバインドできます.しかし、これはenumerate()の特殊な文法ではありません.実際、enumerate()関数は、['Adam', 'Lisa', 'Bart', 'Paul']を類似にしています.[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]です.そのため、反復する各要素は実際にはtupleです.
for t in enumerate(L):
    index = t[0]
    name = t[1]
    print index, '-', name

各tuple要素に2つの要素が含まれていることを知っていれば、forループはさらに簡単に書くことができます.
for index, name in enumerate(L):
    print index, '-', name

これにより、コードが簡単になるだけでなく、2つの付与文も少なくなります.
インデックス反復も本当にインデックスによってアクセスするのではなく、enumerate()関数によって各要素を自動的に(index,element)のようなtupleに変え、再反復することで、インデックスと要素自体が同時に得られることがわかります.
タスク#タスク#
zip()        list      list:

>>> zip([10, 20, 30], ['A', 'B', 'C'])
[(10, 'A'), (20, 'B'), (30, 'C')]
    ['Adam', 'Lisa', 'Bart', 'Paul']  ,           -   (   1  ),             。

  :    zip()   range()