listからforを使って値を取り出す
listからfor文を使って、順番に値を取り出すことができます。
for文での取り出し
>>> shiro = ["韮山", "長浜", "戸倉", "下田"]
>>> for i in shiro:
... print(i)
...
韮山
長浜
戸倉
下田
順番付きの取り出し
順番をつけて表示したい場合には、次のようになります。
>>> for i, s in enumerate(shiro, start=1):
... print(i, s)
...
1 韮山
2 長浜
3 戸倉
4 下田
enumerate 関数
enumerate(イテラブル,start=開始番号)
第1引数には、listなどのイテラブルを指定します。
第2引数はstartオプションで、start=0など、振り付ける番号の開始番号を指定します。デフォルトは(省略すると)、0となります。
戻り値はtuple(順序, 要素)です。
zip関数を使うこともできます。
>>> for i in zip(range(1, 4), shiro):
... print(i)
...
(1, '韮山')
(2, '長浜')
(3, '下田')
zip 関数
zip(イテラブルA,イテラブルB[,…],strict=bool値)
引数には、listなどのイテラブルを指定します。2つ以上複数指定することが可能です。
引数オプションstrictには、各イテラブルの要素数が同じである場合にはTrueを、違う場合にはFalseを指定します。省略した場合に(デフォルト)は、Falseで、最も短い要素数のイテラブルに揃えられます。
戻り値はtupleです。
行を列に、列を行に変換するとも解することができます。
zipを使えば、順番の代わりに要素の内容で並べることも可能です。
>>> gun = ["田方", "那賀", "賀茂"]
>>> for i in zip(shiro, gun):
... print(i)
...
('韮山', '田方')
('長浜', '那賀')
('下田', '賀茂')
enumerateは、イテラブル一つしか処理できませんが、zipは複数扱えます。
>>> kokudaka = [26000, 28000, 31000]
>>> for i in zip(shiro, gun, kokudaka):
... print(i)
...
('韮山', '田方', 26000)
('長浜', '那賀', 28000)
('下田', '賀茂', 31000)
並び替えられたtuplは、元のlistの行列変換の結果となっています。