【问题标题】:Python make list of tuples from two lists and a constantPython从两个列表和一个常量中创建元组列表
【发布时间】:2018-09-14 11:58:11
【问题描述】:

我想使用两个列表和一个常量来制作一个元组列表,如下所示,我想以尽可能快的方式生成 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

【问题讨论】:

  • 你可以使用itertools.repeat
  • 简单地使用print (list(zip([constant]*len(A),A,B)))怎么样。输出为[(3, 1, 0.1), (3, 2, 0.2), (3, 3, 0.3)]

标签: python list tuples


【解决方案1】:

你可以使用itertools.repeat:

from itertools import repeat

ob = list(zip(repeat(constant), A, B))

【讨论】:

  • 应该是zip(repeat(constant),A, B)
  • 避免python循环是最好的选择。
【解决方案2】:

我建议以下解决方案仍然基于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】:

使用itertools.cycle

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

【讨论】:

    猜你喜欢
    • 2022-12-08
    • 2020-02-27
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    相关资源
    最近更新 更多