Python 将列表中的所有元素与所有其他元素相乘和组合,但不重复

Python 将列表中的所有元素与所有其他元素相乘和组合,但不重复,python,Python,结果是: we = [1,2,3,4] for i in we: for e in we: print('('+str(i)+' - '+str(e)+')') #del we[0] 但是我不希望重复相同的元素,就像我有(1-3)一样,所以我不希望(3-1)显示等等。 我还需要在这个中使用for循环,您可以在一行中使用列表理解和itertools.compositions 来自itertools导入组合的 ['({}-{}')格式(e[0],e[1]),用于列表

结果是:

we = [1,2,3,4]
for i in we:
    for e in we:
        print('('+str(i)+' - '+str(e)+')')
    #del we[0]
但是我不希望重复相同的元素,就像我有
(1-3)
一样,所以我不希望
(3-1)
显示等等。
我还需要在这个

中使用for循环,您可以在一行中使用
列表理解
itertools.compositions

来自itertools导入组合的

['({}-{}')格式(e[0],e[1]),用于列表中的e(组合([1,2,3,4,2))]
输出

(1 - 1)
(1 - 2)
(1 - 3)
(1 - 4)
(2 - 1)
(2 - 2)
(2 - 3)
(2 - 4)
(3 - 1)
(3 - 2)
(3 - 3)
(3 - 4)
(4 - 1)
(4 - 2)
(4 - 3)
(4 - 4)
参考资料:

  • 根据你是否想要像(1-1)这样的配对,在itertools中为c组合([1,2,3,4],2):打印(c)#(1,2)(1,3)(1,4)(2,3)(2,4)(3,4)@Darkonaut这就是我要找的。非常感谢你,你确定你不需要(1-1)吗?哦,等等,是的,我确实想要(1-1),我知道@Darknaut也建议了这种方法。所以,他对他的评论投了赞成票。
    ['(1 - 2)', '(1 - 3)', '(1 - 4)', '(2 - 3)', '(2 - 4)', '(3 - 4)']