040-インデックス反復
1475 ワード
Pythonでは、反復は常に要素自体を取り出し、要素のインデックスではありません.
秩序化された集合の場合、要素にはインデックスがあります.時々、forループでインデックスを手に入れたいのですが、どうすればいいですか?
メソッドはenumerate()関数を使用します.
enumerate()関数を使用すると、forループでインデックスindexと要素nameを同時にバインドできます.しかし、これはenumerate()の特殊な文法ではありません.実際、enumerate()関数は、
各tuple要素に2つの要素が含まれていることを知っていれば、forループはさらに簡単に書くことができます.
これにより、コードが簡単になるだけでなく、2つの付与文も少なくなります.
インデックス反復も本当にインデックスによってアクセスするのではなく、enumerate()関数によって各要素を自動的に(index,element)のようなtupleに変え、再反復することで、インデックスと要素自体が同時に得られることがわかります.
タスク#タスク#
秩序化された集合の場合、要素にはインデックスがあります.時々、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()