6

次のようなタプルのリストがあるとしましょう

l = [(4,1), (5,1), (3,2), (7,1), (6,0)]

タプルの 2 番目の要素が 1 であるアイテムを繰り返し処理したいですか?

ループでif条件を使用してそれを行うことができますが、それを行うためのもっとPythonicな方法があることを望んでいましたか?

ありがとう

4

7 に答える 7

3

を使用するだけifです。それは明確で単純です。

for x, y in tuples:
    if y == 1:
        do_whatever_with(x)
于 2013-08-08T16:38:26.673 に答える
3

どうですか

ones = [(x, y) for x, y in l if y == 1]

また

ones = filter(lambda x: x[1] == 1, l)
于 2013-08-08T16:36:46.330 に答える
2
for e in filter(l, lambda x: x[1] == 1):
    print e
于 2013-08-08T16:40:22.827 に答える
2

その上にジェネレーターを構築します。

has_1 = (tup for tup in l if l[1] == 1)
for item in has_1:
    pass
于 2013-08-08T16:39:33.527 に答える
1

繰り返したいのでitertools.ifilter、良い解決策です:

from itertools import ifilter
iter = ifilter(lambda x: x[1] == 1, l)
for item in iter:
    pass
于 2013-08-08T16:39:34.383 に答える