Python 3.x で map() を使ってリストを返す [重複] 質問する

Python 3.x で map() を使ってリストを返す [重複] 質問する

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

回答: Python 2.6:

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

ただし、Python 3.1 では、上記はマップ オブジェクトを返します。

B: Python 3.1:

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

Python 3.x でマップされたリスト (上記のAのように) を取得するにはどうすればよいですか?

あるいは、これを行うより良い方法はありますか? 私の最初のリスト オブジェクトには約 45 個の項目があり、それらを 16 進数に変換したいと考えています。

ベストアンサー1

これを行う:

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

Python 3 以降では、反復可能オブジェクトを反復処理する多くのプロセスが反復子自体を返します。ほとんどの場合、これによってメモリが節約され、処理速度が向上します。

最終的にこのリストを反復処理するだけであれば、map次のようにオブジェクトを反復処理できるため、リストに変換する必要すらありません。

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

おすすめ記事