2013-06-21 94 views
0

我有一个列表迭代选择某些项目在列表片蟒蛇

[[0, 1], [1, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [3, 0]] 

我想选择符合以下条件的列表索引:

1)元素的总和等于3

2)回答上述款项没有出现在列表中

我曾经想过要做到这一点至今的方式:创建一个个的总和一个新的列表上述E列表,countersum,并采取指数,那些满足的作为条件等于3,并且然后IDX:

selection=[n for n, x in list[idx[0]:] if sum not in x] 

所以IDX [0]应该包含所述第一元素的索引在原list满足总和条件,

但是,这给了我错误,我不知道为什么!

TypeError: argument of type 'int' is not iterable 

任何帮助极大赞赏!

+0

不要忘记接受答案! – TerryA

回答

3

这里有一个简单的列表理解:

>>> L = [[0, 1], [1, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [3, 0]] 
>>> [i for i, j in enumerate(L) if sum(j) == 3 and 3 not in j] 
[6, 7] 

如果我理解正确的话,你试图做的是这样的:

[n for n, x in an_integer] # an_integer being an integer because that is what list[idx[0]:] returned 

而且你无法通过整数循环,因此错误。

+0

对不起在我的帖子中犯了一个错误即时查找项目的索引,而不是项目本身 – user124123

+0

@ user1987097您指的是什么意思?索引? – TerryA

+0

使用枚举,同时保持相同的逻辑 –