将i与Python列表中的其他项进行比较

2024-04-16 09:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我在谷歌上搜索了这个问题,找到了相似的答案,但不是我想要的。我不知道这个问题叫什么,所以我认为这对我没有帮助,我正在寻找一个优雅的解决办法。你知道吗

如何一次循环一个列表、一个项目,并将其与列表中的所有其他项目进行比较。例如,如果我有一个列表

l = [1,2,3,4]

输出的每个循环都会产生如下结果

  1. 1对[2,3,4]
  2. 2对[1,3,4]
  3. 3对[1,2,4]
  4. 4对[1,2,3]

我一直在使用的一个解决方案是,每次迭代都要复制列表,找到项目的索引,将其从复制列表中删除,然后比较两者。这条路线似乎不太理想,因为您必须在每次迭代中创建一个新列表。你知道吗


Tags: 项目答案列表解决方案路线理想解决办法
3条回答

我想你可以用列表理解。在每次迭代都创建一个新列表的同时,您不需要每次都删除一个项目:

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]

可以使用^{}从列表中创建长度为3的所有组合,然后使用set.defference方法获取l和组合之间的difference元素。但请注意,您需要将主列表转换为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))]

一个简单的方法是使用两个循环:

arr = [1,2,3,4]

for i in arr:
    comp = []
    for j in arr:
        if i != j:
            comp.append(j)
    print(comp)

相关问题 更多 >