gpt4 book ai didi

python - 用 [ ] 解包 python 元组

转载 作者:行者123 更新时间:2023-12-04 11:17:56 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Unpacking: [x,y], (x,y), x,y - what is the difference?

(2 个回答)


10 个月前关闭。




我知道解包元组的规范方法是这样的

a, b, c = (1, 2, 3)
# or
(a,b,c) = (1, 2, 3)
但注意到你可以像这样解压一个元组
[a, b, c] = (1, 2, 3)
由于某种类型的转换表或列表构造,第二种方法是否会产生任何额外费用?有没有办法检查 python 解释器如何处理这个类似于从编译器查看程序集?

最佳答案

不,这些都是完全等效的。凭经验看待这个问题的一种方法是使用 dis反汇编器:

>>> import dis
>>> dis.dis("a, b, c = (1, 2, 3)")
1 0 LOAD_CONST 0 ((1, 2, 3))
2 UNPACK_SEQUENCE 3
4 STORE_NAME 0 (a)
6 STORE_NAME 1 (b)
8 STORE_NAME 2 (c)
10 LOAD_CONST 1 (None)
12 RETURN_VALUE
>>> dis.dis("(a, b, c) = (1, 2, 3)")
1 0 LOAD_CONST 0 ((1, 2, 3))
2 UNPACK_SEQUENCE 3
4 STORE_NAME 0 (a)
6 STORE_NAME 1 (b)
8 STORE_NAME 2 (c)
10 LOAD_CONST 1 (None)
12 RETURN_VALUE
>>> dis.dis("[a, b, c] = (1, 2, 3)")
1 0 LOAD_CONST 0 ((1, 2, 3))
2 UNPACK_SEQUENCE 3
4 STORE_NAME 0 (a)
6 STORE_NAME 1 (b)
8 STORE_NAME 2 (c)
10 LOAD_CONST 1 (None)
12 RETURN_VALUE
>>>
从正式语言规范来看,这是 detailed here .这是“目标列表”的一部分,相关引用:

Assignment of an object to a target list, optionally enclosed inparentheses or square brackets, is recursively defined asfollows....

关于python - 用 [ ] 解包 python 元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65083494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com