我想使用列表理解以避免编写附加到某些列表的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/