0

我有一个清单

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

我想从列表中选择满足以下条件的索引:

1)元素之和等于3

2) 上述总和的答案未出现在列表中

到目前为止我想到的方法是:使用上述列表的总和创建一个新列表,countersum,并获取满足等于 3 条件的索引 idx,然后:

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

所以 idx[0] 应该包含原始列表中满足求和条件的第一个元素的索引,

然而,这给了我错误,我不知道为什么!

TypeError: argument of type 'int' is not iterable

非常感谢任何帮助!

4

1 回答 1

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

而且您不能遍历整数,因此会出现错误。

于 2013-06-21T12:16:42.560 回答