这些是本周六战斗的 UFC 战士的名字。 而且我想创建关于谁获胜的所有可能的预测,例如从索引 0 开始,Jan 或 Glover 都可以获胜......等等,以便列表的其余部分将 100% 发生组合。
(Jan Vs Glover)
(Yan Vs Sandhagen)
(Islam vs Hooker)
(Li vs Khamzat)
(Volkov vs Tybura)
(Ankalaev vs Oezdemir)
例如:第一个组合: (Jan, Yan, Islam, Li, Volkov, Ankalaev) 第二名 (Jan, Yan, Islam, Khamzat, Tybura, Ankalaev) 等等……
来自:
list_a = ['Jan', 'Yan', 'Islam', 'Li', 'Volkov', 'Ankalaev']
list_b = ['Glover', 'Sandhagen', 'Hooker', 'Khamzat', 'Tybura', 'Oezdemir']
你需要这个吗?
list(zip(list_a, list_b))
还是这个?
from itertools import product
list(product(list_a,list_b))
我试图通过生成所有二进制数 0-64 并将其用作战士列表的布尔映射来解决这个问题。
肯定有更快更优雅的解决方案,但这似乎很直观。
a = ['Jan', 'Yan', 'Islam', 'Li', 'Volkov', 'Ankalaev']
b = ['Glover', 'Sandhagen', 'Hooker', 'Khamzat', 'Tybura', 'Oezdemir']
fighters = list(zip(a, b))
winners = []
for i in range(0, 2**len(a)):
tmp = []
map = str(format(i, '06b'))
for j in range(0, len(a)):
tmp.append(fighters[j][int(map[j])])
winners.append(tmp)
print(winners)