2

以下のようなリストがあり、nested_list[i][1]要素を反復処理してブール値を返そうとしているとします。

nested_list = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9]]

print 1 in (nested_list[i][1] for i in range(nested_list))

私はまだPythonの初心者なので、経験豊富な人が教えてください:これを行うためのよりPython的な方法はありますか?

4

6 に答える 6

4

これを試して:

print 1 in (i[1] for i in nested_list)

メンバーシップのみを確認したい場合は、(...)代わりに実際に使用することをお勧めします[...]。後者は、実際にはそうする必要がないときにリスト全体を作成するためです。

于 2012-09-20T21:40:32.923 に答える
2

ARS はすでに適切な解決策を提案していますが、代わりの答えは単純any(i[1] == 1 for i in nested_list)です。

于 2012-09-20T21:47:57.550 に答える
0

itertoolsを使用したこの回答は、最初のヒットでも短絡します。

>>> from operator import itemgetter
>>> from itertools import imap
>>> 
>>> 1 in (imap(itemgetter(1), nested_list))
True
于 2012-09-20T23:36:20.093 に答える
0

このようなもの?

for (x,y) in nested_list:print y
于 2012-09-20T21:43:23.287 に答える
0
>>> import numpy
>>> a = numpy.array(nested_list)
>>> a[:,1]
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> 1 in a[:,1]
True
于 2012-09-20T21:38:40.350 に答える
0

これだけ追加させてください。

print(1 in zip(*nested_list)[1])
于 2012-09-21T08:40:23.783 に答える