在Python中搜索列表中的元素

时间:2014-11-26 09:28:19

标签: python python-2.7

我有以下列表

b = [[1,2], [1,3], [2,4], [2,5], [3,4], [3,5], [4,6], [5,6]]

我想检查列表b的第二个元素是否等于第一个元素时的条件。

len_b = len(b);
for i in range(0, len_b):
    if b[i][1] == b[0][i]:
        print 'anything'

但是,每当我执行此操作时,我都会IndexError: list index out of range.

4 个答案:

答案 0 :(得分:4)

Hackaholic的解决方案解决了这个问题,但Pythonic的方法是使用元组解包而不是索引: -

>>> b = [[1,2], [1,3], [2,4], [2,5], [3,4], [3,5], [4,6], [5,6]]
>>> for x, y in b:                                              
        if x == y:
            print 'anything'

答案 1 :(得分:4)

除了提供的答案之外,您还可以使用简单的理解来获取满足条件的所有项目的列表:

b = [[1,2], [1,3], [2,4], [2,5], [3,4], [3,5], [4,6], [5,6]]
c = [[x,y] for x, y in b if x == y]

如果您想过滤列表,这可能很方便。

答案 2 :(得分:2)

在您的代码中,它应该是:

b = [[1,2], [1,3], [2,4], [2,5], [3,4], [3,5], [4,6], [5,6]]
len_b = len(b)          # not need of semi-colon here
for i in range(0, len_b):      # range(len_b) is enough
    if b[i][1] == b[i][0]:     # see here
        print 'anything'

让我通过filterlambda

向您介绍
filter(lambda x:x[0]==x[1], b)

答案 3 :(得分:1)

修复为:

len_b = len(b);
for i in range(0, len_b):
    if b[i][0] == b[i][1]:
        print 'anything'

感觉,您可以使用更多pythonic方式编写代码,例如:

for x, y in b:
    if x == y:
        print 'xxx'