Skip to main content
 首页 » 编程设计

python之比较 Python 列表中的 i 和其他项目

2025年05月04日14TianFang

美好的一天,我用谷歌搜索了这个问题并找到了类似的答案,但不是我要找的答案。我不确定这个问题叫什么,所以这对我没有帮助,我正在寻找一个优雅的解决方案。

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

l = [1,2,3,4] 

out 的每个循环都会产生类似的东西

  1. 1 对 [2,3,4]
  2. 2 对 [1,3,4]
  3. 3 对 [1,2,4]
  4. 4 对 [1,2,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))]