Itertools 组合或产品实现

问题描述 投票:0回答:1

下面是代码片段。我正在尝试返回所有可能的比赛列表,这些比赛的组合正确,但是我正在寻找一种方法来返回所有可能的比赛,就像双循环赛一样,每支球队都会进行主客场比赛。因此,意大利对英格兰和英格兰对意大利是两场不同的比赛,但对于组合来说,它被认为是相同的。有什么解决方法吗?我还想为每场比赛分配一个唯一的号码


# Generate all matchups (home and away)
all_matchups = [
    (team1, team2,match_number(team1,team2,teams)) for team1, team2 in combinations(teams, 2)
]   # Duplicate each matchup to represent home and away games

print(all_matchups)```
python artificial-intelligence python-itertools constraint-programming
1个回答
0
投票

您可以将

itertools.product
repeat
参数一起使用来获取输入与其自身的笛卡尔积

>>> from itertools import product
>>> teams = ['England', 'Italy', 'Germany']
>>> [(team1, team2) for team1, team2 in product(teams, repeat=2) if team1 != team2]
[
  ('England', 'Italy'),
  ('England', 'Germany'),
  ('Italy', 'England'),
  ('Italy', 'Germany'),
  ('Germany', 'England'),
  ('Germany', 'Italy')
]
© www.soinside.com 2019 - 2024. All rights reserved.