map()
関数を使用すると、タプルやリスト内の各要素に同じ処理を施した結果を取得することができます。
map()
関数の戻り値は map
オブジェクトなので、下記のように list()
関数でリストに変換する必要があります。
arr = [1, 2, 3, 4, 5]
m = map(lambda x: x**2, arr)
arr2 = list(m) #=> [1, 4, 9, 16, 25]
下記のように、変換用の関数の中で条件を指定することもできます。
arr = [1, 2, 3, 4, 5]
m = map(lambda x: 0 if x%2==0 else x, arr)
arr2 = list(arr) #=> [1, 0, 3, 0, 5]
もちろん、map()
には普通に定義した関数を渡すこともできます。
def filter(x):
return 0 if x%2==0 else x
arr = [1, 2, 3, 4, 5]
arr2 = list(map(filter, arr))
自分自身のリストを書き換えてしまってよい場合は、普通の for
ループで下記のように記述できますね。
arr = [1, 2, 3, 4, 5]
for i in range(len(arr)):
if arr[i] % 2 == 0: arr[i] = 0
文字列も sequence の一種なので、map()
関数を適用することができます。
下記の例では、文字列中の各文字の文字コードをリストで取得しています。
s = 'ABCDE'
arr = list(map(lambda x: ord(x), s)) #=> [65, 66, 67, 68, 69]