python基礎 列表 不一樣的理解

2021-10-07 12:26:03 字數 2841 閱讀 3342

本篇文章介紹什麼是列表,怎樣建立列表,列表的常見使用。這篇文章非常乾貨!值得一看!

列表是一種可變(mutable)序列,可以將其看作一種"容器",既然是"容器",那麼它就是用來裝東西的。那裝什麼呢?按照官網對list的定義,list是用來儲存homogeneous items(同構元素)。這裡又引入了乙個概念homogeneous items,相對應的就是heterogeneous。一般在數學上,我們將homogeneous翻譯成齊次的,將heterogeneous翻譯成非齊次的。顯然,在工程上或者說在程式語言中將homogeneous翻譯成齊次的,是不合適的。那要怎麼理解這個概念了並能將其解釋清楚,我也是花了一番心思。我覺得將homogeneous翻譯成同構的,將heterogeneous翻譯成異構的,是比較合適的。

構 是指資料結構或者資料型別或者物件。對於初學者來說,資料型別或者資料結構應該會更容易理解;如果暫時對 為什麼 構 等價於 物件 不太理解,沒有關係,如果將來你學習了物件導向相關的知識,這個問題就會迎刃而解。好了,我們再回到列表的定義上,列表就是儲存同構元素的集合

可能有同學會問,我在同乙個列表中,列表元素既可以是整數,也可以是浮點數,也可以是字串等。顯然,列表是可以儲存異構元素的。為什麼會這樣呢?難道列表的定義不對。

我們再換乙個角度來看,列表本質上就是乙個儲存資料的容器。既然是資料,那麼資料肯定會被處理。我們假設這樣乙個場景,列表中儲存的是異構的元素,當我們使用for迴圈遍歷列表元素,然後對異構元素進行處理時,顯然需要增加判斷邏輯,來判斷元素的型別,然後才能做相應型別的資料處理。可能1、2個不同型別的if判斷,還能接受,但是,如果列表中的異構元素多了,資料處理的這段**隨著時間的推移就會變得非常糟糕,可讀性和擴充套件性都會變差,這是不符合python哲學的。所以這就是為什麼列表的定義中強調homogeneous items。

所以,雖然在語法上,python列表中可以儲存異構元素,不會有什麼語法問題,程式也可以執行,但是不建議這麼做。下面,我給出了一段具體的list 儲存異構元素的**:

# 列表儲存不同型別的物件

list1 =[1

,2,3.14

,"漁道"

]print

(list1)

# 列印輸出 [1, 2, 3.14, '漁道']

list1 =[1

,2,3.14

,"漁道"

]print(id

(list1)

)# 列印位址 2520446357960

print(id

(list1[0]

))# 列印位址 140704257974672

list1[0]

=2print(id

(list1[0]

))# 列印位址 140704257974704

print(id

(list1)

)# 列印位址 2520446357960

從上面的例子中可以看出,我將list1的第0個元素修改後,程式是能正常執行的。說明列表的元素是可以被修改的,即mutable。

ok,以上內容非常清晰的闡述了列表的定義,以及該定義背後深層次的邏輯。搞清楚了列表的定義,接下來就是對它進行使用了。

lst1 =

print

(f' address is '

)# address is 1822965584328

print

(f'values of lst1 are '

)# values of lst1 are

lst2 =

[i for i in

range(10

)]print

(f' address is '

)# address is 1822965584840

print

(f'values of lst2 are is '

)# values of lst2 are is [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

lst3 =

list()

print

(f' address is '

)# address is 1822969302920

print

(f'values of lst3 are is '

)# values of lst3 are is

lst4 =

list

(lst2)

print

(f' address is '

)# address is 1822969297288

print

(f'values of lst3 are is '

)# values of lst3 are is [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

lst1 是使用一對中括號 建立乙個空列表物件;

lst2 是使用列表表示式 建立乙個列表物件;

lst3 是使用列表建構函式 建立乙個空列表物件;

lst4 也是使用列表建構函式 建立乙個列表物件,建構函式的入參為iterable物件(lst2);

列表是python中三種主要序列型別(sequence types)的一種。前面的文章python基礎-字串的定義/表示/序列操作中介紹字串,我們知道字串本質上也是一種序列,只不過它是由字元構成。

只要是序列,就會有相應的序列操作:

列表物件的常用函式就不再過多的介紹了,使用時如果不記得引數,查一下就好了。

好了,列表的介紹就到這裡啦!

不一樣又不一樣的 木板接水

空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...

我們不一樣

前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...

我們不一樣

這麼多年的兄弟 有誰比我更了解你 太多太多不容易 磨平了歲月和脾氣 時間轉眼就過去 這身後不散的筵席 只因為我們還在 心留在原地 張開手 需要多大的勇氣 這片天 你我一起撐起 更努力 只為了我們想要的明天 好好的 這份情好好珍惜 我們不一樣 每個人都有不同的境遇 我們在這裡 在這裡等你 我們不一樣 ...