我可以在数组中不重复地打印值吗
Can I print values with no repetition in array
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 并且这应该发生在数组中的所有值上。请有人帮助我。谢谢你。如果有重复的问题,请指导我回答那个问题。
使用 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
最简单的方法是使用 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)
是的,你可以。
尝试以下操作:
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
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 并且这应该发生在数组中的所有值上。请有人帮助我。谢谢你。如果有重复的问题,请指导我回答那个问题。
使用 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
最简单的方法是使用 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)
是的,你可以。 尝试以下操作:
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