簡體   English   中英

Python列表的底層結構

[英]Underlying Structure of List in Python

根據我閱讀的資源,python中的列表數據結構是通過數組實現的。 但是,python列表可以包含不同類型的對象。 如果其基礎數據結構是數組,那么數組如何包含不同類型的對象?

數組是特定數據類型,這是我錯了嗎?

Python列表存儲對數據的引用,而不是數據本身。 直接從python源代碼object.h

始終通過“ PyObject *”類型的指針訪問對象。 “ PyObject”類型是僅包含引用計數和類型指針的結構。 為對象分配的實際內存包含其他數據,這些數據只能在將指針轉換為指向較長結構類型的指針之后才能訪問。

如果您需要更詳細的信息,則源代碼中的注釋是詳細的和描述性的。

我在這里給您提供程序示例,您可以輕松了解對象如何存儲在列表中

class my_class:
    def __init__(self):
        self.var=1
    def setparameter(self,txt):
        self.txt=txt

objects = [my_class() for i in range(3)] # creates multiple objects here
for obj in objects:
    obj.setparameter(5)

列表中的對象是類實例的指針。 查看其數據結構

在此處輸入圖片說明

參見另一個示例,這些列表是子列表的指針

清單清單

 a=[[1,2,34],[12,4,5]]

在此處輸入圖片說明

您錯是它是特定類型的數組。 Python列表被實現為對其他Python對象(直接或間接地,其內存地址)的引用的數組。 不僅如此,還因為有很多客房清潔用品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM