Python用两个列表和一个常量创建元组列表

3
我希望用两个列表和一个常数来生成元组列表,如下所示。 我想以最快的方式生成ob。 我需要生成约10万个这样的项目,因此时间很重要......

平均而言,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 - Peter Wood
1
那么,使用print(list(zip([constant]*len(A),A,B)))如何?输出为[(3, 1, 0.1), (3, 2, 0.2), (3, 3, 0.3)] - Sheldore
3个回答

4
您可以使用itertools.repeat来实现:
from itertools import repeat

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

1
应该是 zip(repeat(constant),A, B) - Sheldore
避免使用Python循环是最好的选择。 - Jean-François Fabre

3
我建议仍然基于zip()内置函数提供以下解决方案,无需任何导入指令:
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)]

老兄,你和我思维同步了 :) 看看我的评论。 - Sheldore

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接