所有可能的结果,需要循环

2024-06-16 12:16:49 发布

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

我有一份所有英超球队的名单:

teamlist = ["arsenal", "aston-villa", "bournemouth", "chelsea", "crystal-palace", "everton","leicester-city", "liverpool", "manchester-city", "manchester-united", "newcastle-united", "norwich-city", "southampton","stoke-city", "swansea-city", "tottenham-hotspur", "watford", "west-bromich-albion","west-ham-united" ]

我需要计算所有可能的team1-vs-team2配对。在

目前我有以下代码:

^{pr2}$

将输出:

arsenal-vs-arsenal
arsenal-vs-aston-villa

不过,我需要这样做,通过每个球队,显示他们所有可能的主场比赛赛程,然后转移到下一个球队,输出他们所有可能的主场比赛赛程,并重复,直到所有球队都完成。在


Tags: cityunitedvsarsenalwest名单球队chelsea
3条回答

这可以通过循环两次团队列表和检查对手是否“在”原始团队之前来实现。 代码也不依赖于外部库。在

teamlist = ["arsenal", "aston-villa", "bournemouth", "chelsea", "crystal-palace", "everton","leicester-city", "liverpool", "manchester-city", "manchester-united", "newcastle-united", "norwich-city", "southampton","stoke-city", "swansea-city", "tottenham-hotspur", "watford", "west-bromich-albion","west-ham-united" ]

for team in teamlist:
    for opponent in teamlist:
        if team < opponent:
            print(team + "-vs-" + opponent)

嵌套的for循环的另一种方法是从列表中的项计算长度为2的所有置换。在

>>> from itertools import permutations
>>> for team1, team2 in permutations(teamlist, 2):
...     print '{0} -vs- {1}'.format(team1, team2)
... 
arsenal -vs- aston-villa
arsenal -vs- bournemouth
arsenal -vs- chelsea
# and so on ...

在函数中递归地执行此操作应该有效。在

# after defining teamlist

def printVS(start):
    for x in range(1,len(teamlist)-start):
        print teamlist[start],"vs",teamlist[start+x]
    if start < len(teamlist):
        printVS(start+1)

printVS(0)

相关问题 更多 >