通过列表的嵌套循环避免了相同的元素



我根本无法很好地解释这个概念,但我试图使用嵌套循环来循环列表,我不知道如何避免它们使用相同的元素。

list = [1, 2, 2, 4]
for i in list:
for j in list:
print(i, j) # But only if they are not the same element

所以输出应该是:

1 2
1 2
1 4
2 1
2 2
2 4
2 1
2 2
2 4
4 1
4 2
4 2

编辑,因为解决方案不适用于所有场景:

if i != j解决方案只有在列表中的所有元素都不同的情况下才有效,我显然选择了一个糟糕的例子,但我指的是相同的元素,而不是相同的数字;我已经更改了的示例

您可以比较两次迭代的索引:

lst = [1, 2, 2, 4]
for i, a in enumerate(lst):
for j, b in enumerate(lst):
if i != j:
print(a, b)

您也可以考虑将itertools.permutations用于您的目的:

lst = [1, 2, 2, 4]
from itertools import permutations
for i, j in permutations(lst, 2):
print(i, j)

两者都将输出:

1 2
1 2
1 4
2 1
2 2
2 4
2 1
2 2
2 4
4 1
4 2
4 2

简单地说:

if i != j:
print(i, j)

最新更新