pythonのfor文を回す際に,for i in range(len(配列)))としてはいないでしょうか?
各要素のインデックス番号のみを取り出したいのであれば問題ないですが,とりあえず使っているという方が多いと思います
本記事ではenumerateやzipを使った,よりPythonらしい可読性のよいコードの書き方を解説します
目次
enumerateでインデックス番号と要素を同時に取り出す
pythonでfor文を書く際に,配列の各要素とインデックス番号を同時に取り出して処理したい場合があります
その際はenumerateを使用するときれいに取り出せます
for インデックス番号, 配列1の要素 in enumerate(配列)とすると,iにインデックス番号,nameに配列の各要素が出力されます
names = ['Taro', 'John', 'Hanako', 'Vegeta']
for i, name in enumerate(names):
print(i, name)
# 0 Taro
# 1 John
# 2 Hanako
# 3 Vegeta
zipを使って2つ以上のリストを同時に回す
pythonのfor文で同時に何個かの配列を回したいという場合に,zipを使います
for 配列1の要素, 配列2の要素 in zip(配列1, 配列2)のようにzipの中に配列を順番に指定します
names = ['Taro', 'John', 'Hanako', 'Vegeta']
powers = [35, 45, 23, 18000]
for name, power in zip(names, powers):
print(f'{name}の戦闘力は{power}だよ')
# Taroの戦闘力は35だよ
# Johnの戦闘力は45だよ
# Hanakoの戦闘力は23だよ
# Vegetaの戦闘力は18000だよ
enumerateとzipを同時に使う
これまで用いた,enumerateとzipを同時に使います
for文で複数の配列を同時に回したいが,インデックス番号も欲しい際に使います
for インデックス番号, (配列1の要素, 配列2の要素) in enumerate(zip(配列1, 配列2))とすることで,よりかっこいいPythonコードができあがります
for i, (name, power) in enumerate(zip(names, powers)):
print(f'{i}: {name}の戦闘力は{power}だよ')
# 0: Taroの戦闘力は35だよ
# 1: Johnの戦闘力は45だよ
# 2: Hanakoの戦闘力は23だよ
# 3: Vegetaの戦闘力は18000だよ
参考文献
Built-in Functions
The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Fun…
enumerateからのzipはスーパーおしゃれです
可読性も向上するため,ぜひ使ってください
コメント