次のようなタプルのリストがあるとしましょう
l = [(4,1), (5,1), (3,2), (7,1), (6,0)]
タプルの 2 番目の要素が 1 であるアイテムを繰り返し処理したいですか?
ループでif条件を使用してそれを行うことができますが、それを行うためのもっとPythonicな方法があることを望んでいましたか?
ありがとう
次のようなタプルのリストがあるとしましょう
l = [(4,1), (5,1), (3,2), (7,1), (6,0)]
タプルの 2 番目の要素が 1 であるアイテムを繰り返し処理したいですか?
ループでif条件を使用してそれを行うことができますが、それを行うためのもっとPythonicな方法があることを望んでいましたか?
ありがとう
を使用するだけif
です。それは明確で単純です。
for x, y in tuples:
if y == 1:
do_whatever_with(x)
どうですか
ones = [(x, y) for x, y in l if y == 1]
また
ones = filter(lambda x: x[1] == 1, l)
for e in filter(l, lambda x: x[1] == 1):
print e
その上にジェネレーターを構築します。
has_1 = (tup for tup in l if l[1] == 1)
for item in has_1:
pass
繰り返したいのでitertools.ifilter
、良い解決策です:
from itertools import ifilter
iter = ifilter(lambda x: x[1] == 1, l)
for item in iter:
pass