这可能是一个愚蠢的问题,但我从搜索中找不到任何东西。
我知道如果我想将返回的元组解包成多个变量,语法是 A,B = myfunction()
如果我的函数返回一个列表元组,例如 ( [1], [2] )
怎么办? ,我想分配给我的变量整数 1
和 2
而不是列表 [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/