代码之家  ›  专栏  ›  技术社区  ›  user58925

Python从两个列表和一个常量生成元组列表

  •  3
  • user58925  · 技术社区  · 6 年前

    我想用两个列表和一个常量来创建一个元组列表,如下所示,我想以尽可能快的方式生成ob。我需要做十万个这样的东西,所以时间很重要。。。

    A和B的平均长度约为1000

    constant = 3
    A = [1,2,3]
    B = [0.1,0.2,0.3]
    ob = [(3,1,0.1),(3,2,0.2),(3,3,0.3)]
    

    我知道zip(A,B)可以创建一个元组列表,但我需要在开头使用常量。这是我目前正在使用的代码,我想知道是否有更快的方法来做到这一点

    ob = []
    for i in xrange(len(A)):
        a = A[i]
        b = B[i]
        ob.append((constant,a,b))
    
    print ob
    
    3 回复  |  直到 6 年前
        1
  •  3
  •   Open AI - Opting Out    6 年前

    你可以用 itertools.repeat :

    from itertools import repeat
    
    ob = list(zip(repeat(constant), A, B))
    
        2
  •  2
  •   Laurent H. chthonicdaemon    6 年前

    我建议以下解决方案仍然基于 zip() built-in function

    constant = 3
    A = [1,2,3]
    B = [0.1,0.2,0.3]
    
    ob = list(zip([constant]*len(A), A ,B))
    
    print(ob)  # [(3,1,0.1),(3,2,0.2),(3,3,0.3)]
    
        3
  •  1
  •   napuzba    6 年前

    使用 itertools.cycle

    import itertools 
    ob = list( zip( itertools.cycle([3]) , A , B ) )