python - 从返回的两次解包的简洁方法

标签 python python-3.x

这可能是一个愚蠢的问题,但我从搜索中找不到任何东西。

我知道如果我想将返回的元组解包成多个变量,语法是 A,B = myfunction()
如果我的函数返回一个列表元组,例如 ( [1], [2] ) 怎么办? ,我想分配给我的变量整数 12而不是列表 [1][2] ?是否有一个速记一个类轮或者我需要做

A, B = myfunction()
A = A[0]
B = B[0]

在此先感谢您的帮助。

最佳答案

使用相同的结构:

[A], [B] = myfunction()

演示:
>>> def myfunction():
        return ( [1], [2] )

>>> [A], [B] = myfunction()
>>> A
1
>>> B
2

关于 DeepSpace 的评论“这会创建 2 个新列表”:它没有:
>>> import dis
>>> dis.dis('[A], [B] = myfunction()')
  1           0 LOAD_NAME                0 (myfunction)
              2 CALL_FUNCTION            0
              4 UNPACK_SEQUENCE          2
              6 UNPACK_SEQUENCE          1
              8 STORE_NAME               1 (A)
             10 UNPACK_SEQUENCE          1
             12 STORE_NAME               2 (B)
             14 LOAD_CONST               0 (None)
             16 RETURN_VALUE

这是创建列表的样子:
>>> dis.dis('[A]')
  1           0 LOAD_NAME                0 (A)
              2 BUILD_LIST               1
              4 RETURN_VALUE

上下文很重要。

关于python - 从返回的两次解包的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60138370/

相关文章:

python - __next__ 在生成器和迭代器中,什么是方法包装器?

python - 将 for 循环转换为 while 循环

Python Asyncio 任务取消

python - 在谷歌应用程序引擎中的类中创建函数?

javascript - 如何通过 'POST' 方法将数据从 Javascript 传递到 Python

python - 使用 x 和 y 的数据框通过 Matplotlib 生成直方图

python-3.x - Google Cloud Functions 未返回响应

python - 如何按名称取消异步任务?

java - 程序终止时终止进程运行 `exec`

python - 全局变量在 ipython 中的模块函数中不起作用