050 Pythonのzip関数

1526 ワード

zip関数は、任意の複数(0個と1個を含む)のシーケンスをパラメータとして受け入れ、tupleリストを返します.具体的な意味は文字で表現しにくいので、直接例を見てください.
1.例1:
x = [1, 2, 3]

y = [4, 5, 6]

z = [7, 8, 9]

xyz = zip(x, y, z)

print (list(xyz))

実行結果

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]


この結果からzip関数の基本的な動作方式が分かる.
2.例2
x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print (list(xy))
      :

[(1, 4), (2, 5), (3, 6)]

この結果からzip関数の長さ処理方式が分かる.
3.例3:
x = [1, 2, 3]
x = zip(x)
print (list(x))
      :

[(1,), (2,), (3,)]

この結果からzip関数が1つのパラメータのみで動作する方法が分かる.
4.例4:
x = zip()
print (list(x))

実行結果は次のとおりです.
[]

この結果からzip関数がパラメータなしで動作する方法が分かる.
5.例5:
x = [1, 2, 3]

y = [4, 5, 6]

z = [7, 8, 9]

xyz = zip(x, y, z)

u = zip(*xyz)

print (list(u))

実行結果は、解凍プロセスです.
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

        unzip   ,          :

   zip(*xyz)  ,xyz   :[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

  ,zip(*xyz)     zip((1, 4, 7), (2, 5, 8), (3, 6, 9))

  ,     :[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

注意:関数呼び出しで*list/tupleを使用すると、list/tupleが分離され、位置パラメータとして対応関数に渡されます(対応関数が不定個数の位置パラメータをサポートすることを前提とします)
6.例6:
x = [1, 2, 3]
r = zip(* [x] * 3)
print (list(r))

実行結果は次のとおりです.
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

          :

[x]         ,       x

[x] * 3         ,  3   ,[x, x, x]

zip(* [x] * 3)       ,zip(x, x, x)