列表理解和函数返回多个值

Tom*_*Tom 5 python list-comprehension list

我想使用列表推导来避免编写附加到某些列表的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]
Run Code Online (Sandbox Code Playgroud)

......但它没有:(

附加到每个列表的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)
Run Code Online (Sandbox Code Playgroud)

有更好的方法还是我坚持这个?

Ash*_*ary 11

使用zip*:

>>> ay, by = zip(*(calc(x) for x in steps))
>>> ay
(2, 4, 6, 8, 10)
>>> by
(1, 4, 9, 16, 25)
Run Code Online (Sandbox Code Playgroud)