1. ホーム
  2. python

[解決済み] Python 3.xでリストを返すmap()を取得する

2022-03-16 20:25:31

質問

リストを16進数にマッピングして、そのリストを他の場所で使おうとしています。Python 2.6では、これは簡単でした。

A: Python 2.6です。

>>> map(chr, [66, 53, 0, 94])
['B', '5', '\x00', '^']

しかし、Python 3.1では、上記はmapオブジェクトを返します。

B: Python 3.1です。

>>> map(chr, [66, 53, 0, 94])
<map object at 0x00AF5570>

マッピングされたリストを取得する方法(例えば A を参照してください) Python 3.x ではどうですか?

または、もっと良い方法はないでしょうか?私の最初のリストオブジェクトには約45の項目があり、それらを16進数に変換したいのです。

どのように解決するのですか?

こうしてください。

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

Python 3+ では、反復子に対して反復処理を行う多くの処理は、反復子自身を返すようになっています。 ほとんどの場合、これはメモリを節約することになり、物事をより速く進めることができるはずです。

このリストに対して最終的に反復処理を行うだけなら、リストに変換する必要はありません。 map オブジェクトのようになります。

# Prints "ABCD"
for ch in map(chr,[65,66,67,68]):
    print(ch)