Python関数紹介!!並行した反復処理 zip編
はじめに
この記事では、Pythonの反復処理に使われるzip関数について紹介します
なお、今回からPythonはインタラクティブモードを主に使用していこうと思います
微妙に違いますが、ほとんど一緒です
print使わなくても出力されたりするところが違いといえば違いかな…
zipの記述方法
以下のように記述します
zip(シーケンスA, シーケンスB)
シーケンスとは、連続した何かのことです
リスト、タプル、文字列、整数…etc.
連続してればなんでもオッケーってことですね
実行すると、シーケンスAとシーケンスBが並行処理されます
並行処理するシーケンスは、必要とするだけいくらでも増やせます
3つでも4つでも10000個でも好きなだけ並行処理してください
メモリが不足でクラッシュしたら自己責任でお願いします
>>>Japanese = '赤', '青', '黄色' >>>English = 'red', 'blue', 'yellow' >>>list(zip(Japanese,English)) [('赤', 'red'), ('青', 'blue'), ('黄色', 'yellow')]
こんな感じです
また、並行処理するシーケンスの大きさ(=値の数)が異なる場合は
最も小さいものが全て処理されたときに繰り返しが終了します
先ほどの変数Englishに、ピンク色を加えてみます
>>>English = 'red', 'blue', 'yellow', 'pink' >>>list(zip(Japanese,English)) [('赤', 'red'), ('青', 'blue'), ('黄色', 'yellow')]
zip関数のデータ型
>>>type(zip(Japanese, English)) zip
これで結論は出たようなものですが、
zip関数で作られる値のデータ型はzip型となります
また、zip型はイテラブル(イテレータ*1に対応している)な値で、
反復処理するか、リスト型や辞書型に変換する必要があります
反復処理for...inでの利用
zip関数で返された値を反復処理したい場合は、以下のように記述して下さい
先の英語と日本語で記述したzip型のオブジェクトを並行処理してみます
>>>for iro, color in zip(Japanese, English): print(iro,color) 赤 red 青 blue 黄色 yellow
何の面白みもないですね(え)
さいごに
参考にした参考書の紹介記事です
ai-shirocha.hatenablog.com
*1:リスト、辞書などから要素を1つずつ取り出して返すもの