map() の場合、そのプロトタイプは次のとおりです:map(function, sequence)。これは、シーケンス内の各要素に対して関数操作を実行します。
たとえば、前の a, b, c = map(int, raw_input().split()) は、入力 a, b, c を整数に変換することを意味します。別の例:
a = ['1','2','3','4'] print map(list,a) print map(int,a)
最初のマップはリスト a の各要素をリストに変換し、2 番目のマップは a の各要素を整数に変換します。
zip() の場合、プロトタイプは zip(*list)、list はリスト、zip(*list) は次のようなタプルを返します:
list = [[1,2,3],[4,5,6],[7,8,9]] t = zip(*list) print t
出力: [(1, 4, 7 ) 、(2, 5, 8), (3, 6, 9)]
x = [1,2,3,4,5] y = [6,7,8,9,10] a = zip(x,y) print a
出力: [(1, 6), (2, 7), (3, 8), (4, 9 ) 、(5, 10)]
以下にいくつかの追加があります:
[python] >>> list = [[0,1,2],[3,1,4]] >>> [sum(x) for x in list] [3, 8] >>> map(sum,list) [3, 8]
各列の合計を取得したい場合は、最初に zip(*list) を使用してリストを解凍する必要があります。そして、タプルリストを取得します。ここで、i 番目のタプルには、各行の i 番目の要素が含まれます:
[python] >>> list = [[0,1,2],[3,1,4]] >>> zip(*list) [(0, 3), (1, 1), (2, 4)] >>> [sum(x) for x in zip(*list)] [3, 2, 6] >>> map(sum,zip(*list)) [3, 2, 6]
次の例は、zip と unzip (実際には zip と * は一緒に使用されます) がどのように機能するかを示しています:
[python] >>> x=[1,2,3] >>> y=[4,5,6] >>> zipped = zip(x,y) >>> zipped [(1, 4), (2, 5), (3, 6)] >>> x2,y2=zip(*zipped) >>> x2 (1, 2, 3) >>> y2 (4, 5, 6) >>> x3,y3=map(list,zip(*zipped)) >>> x3 [1, 2, 3] >>> y3 [4, 5, 6]
Pythonでのmap()とzip()の操作方法を紹介する関連記事は、PHP中国語サイトに注目してください!