[英]Compare i vs other items in a Python list
美好的一天,我已经用谷歌搜索了这个问题,并找到了类似的答案,但不是我想要的。 我不确定这个问题叫什么,所以对我没有帮助,我正在寻找一个优雅的解决方案。
如何一次遍历一个列表,一个项目并将其与列表中的所有其他项目进行比较。 例如,如果我有一个列表
l = [1,2,3,4]
每个循环都会产生类似
我一直在使用的一种解决方案是,每次迭代都复制列表,查找项目的索引,将其从重复列表中删除,然后将两者进行比较。 这条路线似乎不太理想,因为您必须在每次迭代中创建一个新列表。
您可以使用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))]
一种简单的方法是使用两个循环:
arr = [1,2,3,4]
for i in arr:
comp = []
for j in arr:
if i != j:
comp.append(j)
print(comp)
我想您可以使用列表理解。 虽然仍然每次迭代都创建一个新列表,但是您不必每次都删除一个项目:
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.