note.nkmk.me

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

Date: 2016-03-21 / Modified: 2016-12-07 / tags: Python
スポンサーリンク

Python3でのmap()の変更点

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

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

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

リストを取得する方法

リストがほしいときは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]]
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事