当涉及到元素的实例化和检索时,元组和列表之间的性能有什么不同吗?

推荐答案

dis模块反汇编函数的字节代码,对于查看元组和列表之间的差异很有用.

在本例中,您可以看到访问元素会生成相同的代码,但分配元组要比分配列表快得多.

>>> def a():
...     x=[1,2,3,4,5]
...     y=x[2]
...
>>> def b():
...     x=(1,2,3,4,5)
...     y=x[2]
...
>>> import dis
>>> dis.dis(a)
  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 BUILD_LIST               5
             18 STORE_FAST               0 (x)

  3          21 LOAD_FAST                0 (x)
             24 LOAD_CONST               2 (2)
             27 BINARY_SUBSCR
             28 STORE_FAST               1 (y)
             31 LOAD_CONST               0 (None)
             34 RETURN_VALUE
>>> dis.dis(b)
  2           0 LOAD_CONST               6 ((1, 2, 3, 4, 5))
              3 STORE_FAST               0 (x)

  3           6 LOAD_FAST                0 (x)
              9 LOAD_CONST               2 (2)
             12 BINARY_SUBSCR
             13 STORE_FAST               1 (y)
             16 LOAD_CONST               0 (None)
             19 RETURN_VALUE

Python相关问答推荐

单击Cookie横幅错误并在Selenium中启用搜索栏

判断两极中N(N 2)列水平是否相等

Pandas数据帧处理Pandas表中Json内的嵌套列表以获取后续Numpy数组

为什么我的主页不会重定向到详细视图(Django)

try 使用tensorFlow.keras.models时optree Import错误

不允许AMBIMA API请求方法

如何防止Plotly在输出到PDF时减少行中的点数?

使用from_pandas将GeDataFrame转换为polars失败,ArrowType错误:未传递numpy. dype对象

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

try 在树叶 map 上应用覆盖磁贴

将两只Pandas rame乘以指数

通过pandas向每个非空单元格添加子字符串

无法定位元素错误404

如何将一个动态分配的C数组转换为Numpy数组,并在C扩展模块中返回给Python

从spaCy的句子中提取日期

实现神经网络代码时的TypeError

在Python 3中,如何让客户端打开一个套接字到服务器,发送一行JSON编码的数据,读回一行JSON编码的数据,然后继续?

lityter不让我输入左边的方括号,'

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值

在代码执行后关闭ChromeDriver窗口