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

标签 python list list-comprehension

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

相关文章:

python - “列表”对象在列表理解中不可调用

python - stdout/stderr 元组或字符串输出

mysql - 在 Asp.Net Core 中使用 Pomelo.EntityFrameworkCore.MySql 获取模型列表 Json

python - 了解赋值错误之前的引用

c - 打印结构的所有 "members"

list - 将两个列表 ["String",Float] 合并到新列表 ["String",Float,Float]

python - 在字典理解中使用 locals()

python - 更改 CNN 以使用 3D 卷积

python - 如何在 Python 中将两个矩阵相乘

Python错误: IPython.显示导入Markdown作为显示