【Python】mapはfor文で使用すると消費される

はじめに

リストの中身を一括で型変換できるmap。

そのmapオブジェクトをfor文のイテラブルとして使用すると消費されてしまう。

どういうことか?見ていこう。

ソースコード

map.py · ki-hi-ro/python@92037c1

def print_ints(int_iterable):
    for x in int_iterable:
        print(x)
    print("消費された後のリスト:", list(int_iterable))

str_list = ['1', '2', '3', '4', '5']

int_map = map(int, str_list)
print_ints(int_map)

int_list = [int(x) for x in str_list]
print_ints(int_list)

print_ints関数のfor文でイテラブルの中身を出力する。そして、その後のイテラブルのリストを出力する。

str_listには、文字列の数字が入っている。

int_mapは、str_listの各要素をint型に変換している。

int_listも同じことをリスト内包表記で行っている。

出力結果

1
2
3
4
5
消費された後のリスト: []
1
2
3
4
5
消費された後のリスト: [1, 2, 3, 4, 5]

mapオブジェクトの場合は、for文で各要素が消費されてしまっている。

1
2
3
4
5
消費された後のリスト: []

リスト内包表記の場合は、for文を使用しても各要素が消費されることはない。

1
2
3
4
5
消費された後のリスト: [1, 2, 3, 4, 5]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です