LoginSignup
1
2

More than 1 year has passed since last update.

[Python]リストの要素全てに処理を行いたいメモ

Last updated at Posted at 2022-03-29

例えばa=[1,2,3,4,5]などのリストに対して、中の要素それぞれに1を足したり2を掛けたりする方法についての羅列 & 自分用メモです。

今回は、以下の配列を例に操作を行います。全ての要素を2倍することを考えます。

a = [1, 2, 3, 4, 5]

# 完成形 -> a = [2, 4, 6, 8, 10]

頑張って全部書く

a[0] *= 2
a[1] *= 2
a[2] *= 2
a[3] *= 2
a[4] *= 2

print(a)
# -> [2, 4, 6, 8, 10]
  • ......

上の操作をループで行う

for i in range(len(a));
    a[i] *= 2
  • さっきよりは簡潔。

ちなみに、for num in a:num *=2を処理しても、元の配列の要素には反映されないので注意。
別で配列を作ってappendしたりするならfor num in a:でも可?

map関数を利用する

def func(x):
   return x*2

a = list(map(func, a))

# もしくは
a = list(map(lambda x: x*2, a))
  • map関数と関数、もしくはlambda式を用いる方法
  • aへの上書き可能。
  • 返り値はmapオブジェクトのため、配列にしたい場合はlistで受け止める必要がある。

リスト内包表記を利用する

a = [x*2 for x in a]
  • for文を内包表記した形。
  • aへの上書き可能。
  • 簡潔!

結局

2を掛けたり1を足すぐらいの操作だったらリスト内包表記が最も簡潔だけど、複雑な処理だったりすると、別で関数を定義できてループが要らないmap関数が便利な気がします。

他にも良い方法があれば是非共有してください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2