Python составляет список кортежей из двух списков и констант - PullRequest
0 голосов
/ 14 сентября 2018

Я хотел бы составить список кортежей, используя два списка и константу, следующим образом, я бы хотел сгенерировать 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 ]

0 голосов
/ 14 сентября 2018

Вы можете использовать itertools.repeat:

from itertools import repeat

ob = list(zip(repeat(constant), A, B))
0 голосов
/ 14 сентября 2018

использование itertools.cycle

import itertools 
ob = list( zip( itertools.cycle([3]) , A , B ) )
0 голосов
/ 14 сентября 2018

Я предлагаю следующее решение, основанное на 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)]
...