【发布时间】:2017-03-21 10:12:11
【问题描述】:
我有一个清单:
list = ['john','jeff','george','peter']
我想创建以下输出:
[
[('john','jeff'),('george','peter')],
[('john','george'),('jeff','peter')],
[('john','peter'),('jeff','george')],
[('george','peter'),('john','jeff')],
[('jeff','peter'),('john','george')],
[('jeff','george'),('john','peter')]
]
一般来说,我想为 2 对 2 游戏创建所有玩家组合。在一条输出线内,一个名字只能显示一次(一名球员一次只能在一支球队中比赛)。游戏允许进行复赛,因此每对元组都应该重复,但顺序不同(元组顺序不同,元组中项目的顺序不同)。
当列表有超过4个元素时,例如5个,输出应该是这样的:
list = ['john','jeff','george','peter','simon']
[
[('john','jeff'),('george','peter')],
[('john','george'),('jeff','peter')],
[('john','george'),('jeff','simon')],
[('john','peter'),('jeff','george')],
[('john','simon'),('jeff','george')],
[('george','peter'),('john','jeff')],
[('george','simon'),('john','jeff')],
[('jeff','peter'),('john','george')],
[('jeff','george'),('john','peter')],
[('jeff','george'),('john','peter')]
...
]
所以一场比赛总是有 4 名玩家。其余玩家只是等待,不参与特定游戏。
【问题讨论】:
-
你试过什么,它到底有什么问题?
-
我尝试创建两个相同的列表并使用
c = list(itertools.product(list1, list2))。但它会在两边创建具有相同名称的输出。 -
然后给出minimal reproducible example。你做过研究吗?创造一对球员是一个很好的基础。例如:stackoverflow.com/q/5360220/3001761
-
你应该试试
itertools.product(your_list, repeat=2)。
标签: python