Python 选择在列表中迭代的某些项
我有一张单子Python 选择在列表中迭代的某些项,python,Python,我有一张单子 [[0, 1], [1, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [3, 0]] 我想从列表中选择满足以下条件的索引: 1) 元素之和等于3 2) 上述金额的答案不在列表中 到目前为止,我所想的方法是:用上述列表的总和Counterum创建一个新列表,并取满足等于3条件的索引idx,然后: selection=[n for n, x in list[idx[0]:] if sum not in x] 所以id
[[0, 1], [1, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [3, 0]]
我想从列表中选择满足以下条件的索引:
1) 元素之和等于3
2) 上述金额的答案不在列表中
到目前为止,我所想的方法是:用上述列表的总和Counterum创建一个新列表,并取满足等于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
非常感谢您的帮助 下面是一个简单的列表:
>>> 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
您不能遍历整数,因此会出现错误。下面是一个简单的列表:
>>> 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
您不能遍历整数,因此会出现错误。对不起,我在帖子中犯了一个错误,我在查找项目的索引,而不是项目的索引themselves@user1987097你所说的指数到底是什么意思?索引?在保持相同逻辑的情况下使用enumerate是的,这非常有效,但我仍然不明白为什么我最初的尝试不起作用。当然这意味着它应该从列表[idx[0]]开始,然后继续迭代?@user1987097否。for循环就是这样做的。它从一开始就逐个检查列表中的每个项目:pSorry在我的帖子中犯了一个错误,我在寻找项目的索引,而不是项目themselves@user1987097你所说的指数到底是什么意思?索引?在保持相同逻辑的情况下使用enumerate是的,这非常有效,但我仍然不明白为什么我最初的尝试不起作用。当然这意味着它应该从列表[idx[0]]开始,然后继续迭代?@user1987097否。for循环就是这样做的。它从一开始就逐个检查列表中的每个项目:不要忘记接受答案!别忘了接受答案!