У меня есть список некоторых элементов, например, [1, 2, 3, 4]
и одного объекта, например, 'a'
. Я хочу создать список кортежей с элементами списка в первой позиции и единственным объектом во второй позиции: [(1, 'a'), (2, 'a'), (3, 'a'), (4, 'a')]
.
Я мог бы сделать это с zip
как это:
def zip_with_scalar(l, o): # l - the list; o - the object
return list(zip(l, [o] * len(l)))
Однако это дает мне ощущение создания и ненужного списка повторяющихся элементов.
Другая возможность
def zip_with_scalar(l, o):
return [(i, o) for i in l]
что действительно очень чисто и питонично, но здесь я делаю все это "вручную". В Хаскеле я бы сделал что-то вроде
zipWithScalar l o = zip l $ repeat o
Существует ли какая-либо встроенная функция или прием, либо для архивирования со скаляром, либо для чего-то, что позволило бы мне использовать обычный zip, то есть бесконечный список?