a = [5,7,3,1,2]
for i in a:
for j in a:
if(i==j):
continue
else:
print(i,j)
print("")
выход:
5 7
5 3
5 1
5 2
7 5
7 3
7 1
7 2
3 5
3 7
3 1
3 2
1 5
1 7
1 3
1 2
2 5
2 7
2 3
2 1
Мой код просто отображает все значения, но будет пропускать значения, которые совпадают, но если я хочу, не хочу отображать значения, которые уже напечатаны, как если бы было напечатано значение (5,7), оно не должно печататься снова как (7,5). Как только значение 5 7 будет напечатано, поэтому для следующей итерации он не должен отображать 7 5, и это должно произойти со всеми значениями в массиве. Пожалуйста, помогите мне. Спасибо. Если есть дублирование вопроса, пожалуйста, наведите меня на этот вопрос.
itertools.combinations
всего использовать itertools.combinations
который заботится о том, чтобы избежать повторений для вас:
from itertools import combinations
a = [5, 7, 3, 1, 2]
for x, y in combinations(a, 2):
print(x, y)
5 7
5 3
5 1
5 2
7 3
7 1
7 2
3 1
3 2
1 2
Если вы хотите сделать это без помощи библиотеки, вы можете сделать следующее, используя enumerate
и нарезку:
for i, x in enumerate(a):
for y in a[i+1:]: # combine only with elements after x (index i)
print(x, y)
Использовать combinations
из itertools
:
from itertools import combinations
for tup in combinations([5,7,3,1,2],2):
print(tup[0],tup[1])
5 7
5 3
5 1
5 2
7 3
7 1
7 2
3 1
3 2
1 2
Да, ты можешь. Попробуйте следующее:
a = [5,7,3,1,2]
for i in range(len(a)):
for j in a[i:]:
if(a[i]==j):
continue
else:
print(a[i],j)
print("")
Это даст результат:
5 7
5 3
5 1
5 2
7 3
7 1
7 2
3 1
3 2
1 2