Python3のmapはリストではなくイテレータを返す

Python3でのmap()の変更点 map()は、リストなどの各要素に処理を適用する組み込み関数。

map(function, iterable, ...) function を、結果を返しながら iterable の全ての要素に適用するイテレータを返します。 2. 組み込み関数 map() — Python 3.5.1 ドキュメント

Python2まではリストを返すようになっていたが、Python3ではイテレータを返すようになりました。

2to3を使ってコードをPython 3に移植する - Dive Into Python 3 日本語版 第8回 リスト処理と内包表記:Python 3.0 Hacks|gihyo.jp … 技術評論社 Python3におけるmap/filterの使い方 - どこかに向かうらしい話

リストを取得する方法

リストがほしいときはlist()で囲む。map()ではなくリスト内包表記を使ってもいい。

i = '1 2 3'
print(map(int, i.split(' ')))
# <map object at 0x1073d5588> マップオブジェクト
print(list(map(int, i.split(' '))))
# [1, 2, 3]
print([int(x) for x in i.split(' ')])
# [1, 2, 3]

リストの各要素をsplit()で分割してからint()で整数に変換する例を示します。

i2 = ['1 2 3', '4 5 6', '7 8 9']
input_array = []
for data in i2:
    input_array.append(list(map(int, data.split(' '))))
    # リスト内包表記
    # input_array.append([int(x) for x in data.split(' ')])
print(input_array)
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Last Updated: 6/26/2019, 10:34:03 PM