Python3でmapがmap objectを返す(ようになった)件

listにmapを適用したらmap objectなるものが返ってきて途方に暮れた。

ググったらGetting a map() to return a list in python 3.1 – Stack Overflowが見つかった。

質問内容(以下)を見ると、どうも3.1からmap objectを返すようになったらしい。

A: python 2.6:
>>> map(chr,[66,53,0,94])

['B', '5', '\x00', '^']
However, on 3.1, the above returns a map object.

B: python 3.1:

>>> map(chr,[66,53,0,94])

なぜ?

答えは回答に書いてあった。

Do this:

list(map(chr,[66,53,0,94]))

In Python 3+, many processes that iterate over iterables return iterators themselves. In most cases, this ends up saving memory, and should make things go faster.

iteratorsを返すことで、イテレーション毎に関数を呼び出すようにしたらしい。そうすると、メモリ消費量が減るから。なるほどなー。

Leave a Reply

Your email address will not be published.