从两个列表的字符串中获取所有组合[重复]

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

这些是本周六战斗的 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']
python list combinations
2个回答
1
投票

你需要这个吗?

list(zip(list_a, list_b))

还是这个?

from itertools import product
list(product(list_a,list_b))

0
投票

我试图通过生成所有二进制数 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)
© www.soinside.com 2019 - 2024. All rights reserved.