【问题标题】:Getting all combinations from strings two lists [duplicate]从字符串两个列表中获取所有组合[重复]
【发布时间】:2021-10-29 14:32:00
【问题描述】:

这些是本周六战斗的 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


    【解决方案1】:

    你需要这个吗?

    list(zip(list_a, list_b))
    

    还是这个?

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

    【讨论】:

    • 哦,是的,这有帮助,现在我在每个括号中都有 2 个字符串,现在我必须做某种生成器,在括号中选择一个名称并将所有可能性放在一个列表中跨度>
    【解决方案2】:

    我试图通过生成所有二进制数 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 2019-04-23
      相关资源
      最近更新 更多