美好的一天,我已经用Google搜索了这个问题并找到了类似的答案,但不是我想要的。我不确定这个问题是什么,所以我没有帮助我,我正在寻找一个优雅的解决方案。
如何一次循环列表,项目,并将其与列表中的所有其他项目进行比较。例如,如果我有一个列表
l = [1,2,3,4]
out的每个循环都会产生类似
的东西我一直在玩的一个解决方案是每次迭代都复制列表,找到项目的索引,从重复列表中删除它并比较两者。这条路线似乎不太理想,因为你必须在每次迭代时创建一个新的列表。
答案 0 :(得分:3)
您可以使用itertools.combiations
从列表中创建长度为3的所有组合,然后使用set.defference
方法获取l
和组合之间的差异元素。但请注意,您需要将主列表转换为set
对象:
>>> from itertools import combinations
>>> l = {1,2,3,4}
>>> [(l.difference(i).pop(),i) for i in combinations(l,3)]
[(4, (1, 2, 3)), (3, (1, 2, 4)), (2, (1, 3, 4)), (1, (2, 3, 4))]
答案 1 :(得分:2)
一种简单的方法是使用两个循环:
arr = [1,2,3,4]
for i in arr:
comp = []
for j in arr:
if i != j:
comp.append(j)
print(comp)
答案 2 :(得分:1)
我猜你可以使用列表理解。在每次迭代时仍然创建新列表时,您不需要每次都删除项目:
l = [1,2,3,4]
for i in l:
temp = [item for item in l if item != i]
print temp
[2, 3, 4]
[1, 3, 4]
[1, 2, 4]
[1, 2, 3]