您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python交换列表

Python交换列表

看起来像Python在内部交换项目。检查这个程序

a, b = [1, 2], [2, 3]

def func():
    a, b = b, a

import dis
dis.dis(func)

  4           0 LOAD_FAST                0 (b)
              3 LOAD_FAST                1 (a)
              6 ROT_TWO             
              7 STORE_FAST               1 (a)
             10 STORE_FAST               0 (b)
             13 LOAD_CONST               0 (None)
             16 RETURN_VALUE

因此,Python的推动 从ba在堆栈LOAD_FAST。因此,现在最上面的元素是所指向的引用a,下一个是所指向的引用b。然后,它用于ROT_TWO交换堆栈的前两个元素。所以,现在,最顶部的元件是由指向的参考b和下一个是基准指出通过a,然后将堆叠的两个元素分配顶部ab分别与STORE_FAST

当我们处理的项目数小于4时,这就是在赋值语句中进行排序的方式。

,它将构建一个元组并解压值。检查这个程序

a, b, c, d = [1, 2], [2, 3], [4, 5], [5, 6]

def func():
    a, b, c, d  = d, c, b, a

import dis
dis.dis(func)

  4           0 LOAD_FAST                0 (d)
              3 LOAD_FAST                1 (c)
              6 LOAD_FAST                2 (b)
              9 LOAD_FAST                3 (a)
             12 BUILD_TUPLE              4
             15 UNPACK_SEQUENCE          4
             18 STORE_FAST               3 (a)
             21 STORE_FAST               2 (b)
             24 STORE_FAST               1 (c)
             27 STORE_FAST               0 (d)
             30 LOAD_CONST               0 (None)
             33 RETURN_VALUE
python 2022/1/1 18:44:33 有298人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶