使用多个列表的列表推导式

3

我无法确定一种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) - Martijn Pieters
我不确定你所指的产品在哪里,我只是想从列表a中减去元素,并将列表b和c的元素加到一个标量中,然后返回一个新列表。下面提供的答案完成了我所指的任务,感谢你的回复。 - Kevin
1个回答

7
< p > zip 函数可以将多个列表合并为元组序列:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接