如何在Python中打印列表的可能组合?

2024-05-23 17:07:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我的清单是:

groupA=['Russia', 'Egypt', 'Saudi Arabia', 'Uruguay']

所以我想打印出所有相互比赛的球队的独特组合:

Russia Vs. Egypt
Russia Vs. Saudi Arabia
Russia Vs. Uruguay
Egypt Vs. Saudi Arabia
Egypt Vs. Uruguay
Saudi Arabia Vs. Uruguay

我可以用for循环吗?你知道吗


Tags: forvs球队saudirussiaegyptgroupauruguay
3条回答

这应该是你想要的:

groupA=['Russia', 'Egypt', 'Saudi Arabia', 'Uruguay']

for i in range(len(groupA)):
  for j in range(i+1, len(groupA)):
    print("{} Vs. {}".format(groupA[i], groupA[j]))

如果您喜欢使用itertools:

from itertools import combinations

groupA=['Russia', 'Egypt', 'Saudi Arabia', 'Uruguay']

for combo in combinations(groupA, 2):
  print("{} Vs. {}".format(combo[0], combo[1]))

每当您想到排列、组合、笛卡尔积等时,请考虑itertools库;它是Python的标准。如果它不在里面,那就看看sympy。你知道吗

>>> from itertools import combinations
>>> for c in combinations(groupA, 2):
...     '{} Vs. {}'.format(*c)
... 
'Russia Vs. Egypt'
'Russia Vs. Saudi Arabia'
'Russia Vs. Uruguay'
'Egypt Vs. Saudi Arabia'
'Egypt Vs. Uruguay'
'Saudi Arabia Vs. Uruguay'

format也是输出的一个很好的选择。你知道吗

这可以做到:

groupA = ['Russia', 'Egypt', 'Saudi Arabia', 'Uruguay']
for index, country in enumerate(groupA):
    for rival in groupA[index+1:]:
        print('%s vs %s'%(country, rival) )

相关问题 更多 >