我有以下列表
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.
答案 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'
让我通过filter
和lambda
:
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'