【问题标题】:loop and merge to create new list循环并合并以创建新列表
【发布时间】:2019-08-12 01:45:59
【问题描述】:

以下最有效的方法是什么?

A = ["A","B","C"]
B = [range(19,21)]

名单结果:

C = ["A19", "B19", "C19", "A20", "B20", "C20"] 

非常感谢!

【问题讨论】:

    标签: python loops join merge


    【解决方案1】:

    itertools.product也可以用:

    from itertools import product
    
    A = ["A","B","C"]
    C = [a + str(n) for n, a in product(range(19, 21), A)]
    

    请注意,有多种方法可以将字符串 (a) 和数字 n 格式化为单个字符串:

    a + str(n)
    "{}{}".format(a, n)
    f"{a}{n}"  # for python >= 3.6
    

    【讨论】:

      【解决方案2】:

      使用列表推导:

      A = ["A","B","C"]
      B = range(19,21)
      print([x+str(y) for y in B for x in A])
      

      或者如果版本高于 Python 3.6:

      print([f"{x}{y}" for y in B for x in A])
      

      输出:

      ['A19', 'B19', 'C19', 'A20', 'B20', 'C20']
      

      编辑:

      使用这个:

      A = ["X","Y","Z"]
      B = range(19,21)
      C = [x+str(y) for y in B for x in A]
      print(C)
      curveexpression = ""
      for zoo in "Animal":
          for month in C:
              arrival += "[%s,%s];" % (zoo, month)
      print(arrival)
      

      【讨论】:

      • 以下操作的正确方法是什么? A= ["X","Y","Z"] B = range(19,21) C = [x+str(y) for y in B for x in A]arrival="" for zoo in [" Animal"]: for month in [C]: 到达 += "[%s,%s];" %(动物园,月)我无法得到以下内容,[Animal,X19];[Animal,Y19];[Animal,Z19];[Animal,X20];[Animal;Y20];[Animal,Z20]
      • @VincentHeng 复制我帖子的以下部分,这样就可以了
      【解决方案3】:

      你可以使用下面的listcomp:

      from itertools import product
      
      A = ["A","B","C"]
      B = range(19,21)
      
      [i + j for i, j in product(A, map(str, B))]
      # ['A19', 'A20', 'B19', 'B20', 'C19', 'C20']
      

      from itertools import product
      from operator import concat
      
      [concat(*i) for i in product(A, map(str, B))]
      # ['A19', 'A20', 'B19', 'B20', 'C19', 'C20']
      

      如果你想从一个范围内建立一个列表,使用函数list():

      list(range(19, 21))
      # [19, 20]
      

      【讨论】:

        【解决方案4】:

        对于列表中的范围:

        B = [*range(19, 21)]:
        
        C = [a + str(b) for b in B for a in A]
        

        【讨论】:

          猜你喜欢
          • 2021-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-07
          • 2021-12-09
          • 1970-01-01
          • 2021-01-21
          • 1970-01-01
          相关资源
          最近更新 更多