我很难正确描述我的问题,这就是为什么我没有找到解决方案,而我 100% 确定那里有一个......因此,如果我的问题不是独一无二的,请不要对我生气。 所以下面,我尝试描述我需要做什么。基本上通过列表进行迭代,同时在下一次迭代时跳过该项目。跳过的项是 for 循环中的项。
list = [item1,item2,item3,item4,item5]
item1+item2 => item1+item3 => item1+item4 => item1+item5
next iteration
item2+item3 => item2+item4 => item2+item5
next iteration
item3+item4 => item3+item5
last iteration
item4+item5
以下是使用列表推导的方法:
[i + j for ix, i in enumerate(l) for j in l[ix+1: len(l)]]
检查一个简单的示例:
l = [4,2,1,4,2]
[i + j for ix, i in enumerate(l) for j in l[ix+1: len(l)]]
[6, 5, 8, 6, 3, 6, 4, 5, 3, 6]
4+2 4+1 4+4 4+2 2+1 2+4 2+2 1+4 1+2 4+2
您可以使用itertools.combinations
:
from itertools import combinations
lst = ['item1', 'item2', 'item3', 'item4', 'item5']
print(list(map('+'.join, combinations(lst, 2))))
这输出:
['item1+item2', 'item1+item3', 'item1+item4', 'item1+item5', 'item2+item3', 'item2+item4', 'item2+item5', 'item3+item4', 'item3+item5', 'item4+item5']
你可以试试这个。
_list = [item1,item2,item3,item4,item5]
for i in range(len(_list)):
for j in range(i+1,len(_list)):
print(_list[i],_list[j])
不要使用内置名称和关键字作为变量名称。