python将一个列表赋值给另一个列表_求问Python的一个列表赋值问题

i = s[i] = 3 等价于 i = 3; s[i] = 3

用dis模块来解析执行过程:

>>> def f():

s = [1, 2, 3, 4, 5, 6]

i = 0

i = s[i] = 3

>>> import dis

>>> dis.dis(f)

2 0 LOAD_CONST 1 (1)

3 LOAD_CONST 2 (2)

6 LOAD_CONST 3 (3)

9 LOAD_CONST 4 (4)

12 LOAD_CONST 5 (5)

15 LOAD_CONST 6 (6)

18 BUILD_LIST 6

21 STORE_FAST 0 (s) # s = [1, 2, 3, 4, 5, 6]

3 24 LOAD_CONST 7 (0)

27 STORE_FAST 1 (i) # i = 0

4 30 LOAD_CONST 3 (3) # 常量3 入栈

33 DUP_TOP # 复制栈顶,也就是 常量3

34 STORE_FAST 1 (i) # i = 3

37 LOAD_FAST 0 (s)

40 LOAD_FAST 1 (i)

43 STORE_SUBSCR # s[i] = 3

44 LOAD_CONST 0 (None) # 返回 None

47 RETURN_VALUE

分开写的例子

>>> def f2():

s = [1, 2, 3, 4, 5, 6]

i = 0

i = 3

s[i] = 3

>>> dis.dis(f2)

2 0 LOAD_CONST 1 (1)

3 LOAD_CONST 2 (2)

6 LOAD_CONST 3 (3)

9 LOAD_CONST 4 (4)

12 LOAD_CONST 5 (5)

15 LOAD_CONST 6 (6)

18 BUILD_LIST 6

21 STORE_FAST 0 (s) # s = [1, 2, 3, 4, 5, 6]

3 24 LOAD_CONST 7 (0)

27 STORE_FAST 1 (i) # i = 0

4 30 LOAD_CONST 3 (3)

33 STORE_FAST 1 (i) # i = 3

5 36 LOAD_CONST 3 (3)

39 LOAD_FAST 0 (s)

42 LOAD_FAST 1 (i)

45 STORE_SUBSCR # s[i] = 3

46 LOAD_CONST 0 (None)

49 RETURN_VALUE

>>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值