Понимание списка с использованием нескольких списков

#python #list

#python #Список

Вопрос:

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

vbat = Vmax — a b c

Где Vmax является константой, но a, b и c являются списками. Я надеялся, что смогу сделать что-то, что легко читается следующим образом:

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

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

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

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

Комментарии:

1. Вы имеете в виду продукт? Затем просто вложите for циклы, слева направо : for x in a for y in b for z in c . Однако map() вместо этого вы ищете zip() : for x, y, z in zip(a, b, c)

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

Ответ №1:

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

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