Я хотел бы составить список кортежей, используя два списка и константу, как показано ниже, я хотел бы сгенерировать 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
Как насчет простого использования print (list(zip([constant]*len(A),A,B))). Выход [(3, 1, 0.1), (3, 2, 0.2), (3, 3, 0.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)]
Чувак, у нас с тобой синхронизированные умы :) Проверьте мой комментарий
используйте itertools.cycle
import itertools
ob = list( zip( itertools.cycle([3]) , A , B ) )
Вы можете использовать
itertools.repeat