Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中对同一列表迭代两次并避免重复_Python_List_Duplicates - Fatal编程技术网

在python中对同一列表迭代两次并避免重复

在python中对同一列表迭代两次并避免重复,python,list,duplicates,Python,List,Duplicates,我有一个列表[1,2,3,4,5],我用for循环迭代了两次 for i in list: for j in list: print(i,j) 我不关心I和j的顺序,因此我收到了很多副本。例如,1,2和2,1对我来说是“相同的”。1,4和4,1和3,5和5,3也是一样的,依此类推 我想删除这些重复项,但我真的不明白该怎么做。实际上,您想要的是以下组合: >>> list(combinations( [1,2,3,4,5],2)) [(1, 2), (1

我有一个列表
[1,2,3,4,5]
,我用for循环迭代了两次

for i in list:
    for j in list:
        print(i,j)
我不关心I和j的顺序,因此我收到了很多副本。例如,1,2和2,1对我来说是“相同的”。1,4和4,1和3,5和5,3也是一样的,依此类推


我想删除这些重复项,但我真的不明白该怎么做。

实际上,您想要的是以下组合:

>>> list(combinations( [1,2,3,4,5],2))
[(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)]
作为生成器的结果,如果要在其上循环,则不需要
列表

for i,j in combinations( [1,2,3,4,5],2):
      #do stuff
另外,如注释中所述,如果您希望使用(n,n)这样的元组,则可以使用:


也许你还想使用
itertools.compositions\u和\u replacement([1,2,3,4,5],2)
,如果你想包含
(n,n)
这样的元组。我刚才在玩itertools,发现
itertools.compositions()。所以也许你也应该用一套来包装;-)@Finn Yes如果主列表包含DUP,则结果将包含重复的结果!但在这种情况下,由于主列表不包含DUP,因此无需使用
设置
>>> list(combinations_with_replacement([1, 2, 3, 4, 5],2))
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 2), (2, 3), (2, 4), (2, 5), (3, 3), (3, 4), (3, 5), (4, 4), (4, 5), (5, 5)]