2016-10-14 2 views
1

Мне не удалось определить метод Pythonic для создания списка с использованием списка из нескольких списков. Я пытаюсь создать список, который реализует следующие функции:Сопоставление списков с использованием нескольких списков

VBAT = Vmax - а + Ь + с

Где Vmax является константой, а, б и в списки. Я надеялся, что я мог бы сделать то, что легко читать так:

vbat = [Vmax - x + y + z for x in a and y in b and z in c] 

Я знаю, что я могу использовать оператор карты, чтобы сделать новый комбинированный список, а затем использовать список понимание в новом списке, но это кажется немного уродливым и трудночитаемым. Код, который я знаю, что буду работать показано ниже:

newlist = map(sub,map(add,b,c),a) 
vbat = [Vmax + x for x in newlist] 

Есть ли решение этой проблемы, что является дружественным для читателя? Заранее спасибо.

+1

Вы имеете в виду продукт? Затем просто вставьте петли 'for', слева направо:' для x в a для y в b для z в c'. 'Map()' предполагает, что вы ищете 'zip()' вместо этого: 'для x, y, z в zip (a, b, c)' –

+0

Я не уверен, что вы имеете в виду продукт, Я просто хочу вычесть элемент списка a и добавить элементы списков b и c в скаляр и вернуть новый список. Ответ, приведенный ниже, выполняет задачу, о которой я говорил, спасибо за ваш ответ. – Kevin

ответ

4

zip функция может объединить несколько списков в последовательности кортежей:

[Vmax - a_el + b_el + c_el for (a_el, b_el, c_el) in zip(a, b, c)] 
+0

Это сработало отлично, спасибо! – Kevin

Смежные вопросы