Python入門

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の行列変換の結果となっています。