#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)]