我想使用列表理解来避免编写附加到某些列表的 for 循环。但是它可以与返回多个值的函数一起使用吗?我希望这个(简化示例)代码能够工作...
def calc(i):
a = i * 2
b = i ** 2
return a, b
steps = [1,2,3,4,5]
ay, be = [calc(s) for s in steps]
...但它没有:(
附加到每个列表的 for 循环有效:
def calc(i):
a = i * 2
b = i ** 2
return a, b
steps = [1,2,3,4,5]
ay, be = [],[]
for s in steps:
a, b = calc(s)
ay.append(a)
be.append(b)
有没有更好的方法,还是我只能坚持这个?
最佳答案
将zip
与*
一起使用:
>>> ay, by = zip(*(calc(x) for x in steps))
>>> ay
(2, 4, 6, 8, 10)
>>> by
(1, 4, 9, 16, 25)
关于python - 列表理解和返回多个值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19082084/