list
list是有序的集合,可隨時添加刪除元素。用中括號[]圈起來,例如
在這裡,花名冊是一個變量,就是一個有序的list,索引排序的位置是從[0]開始,依次往後,len()函數可以統計list中元素個數:
索引的位置超出了列表的元素總數的話就會報錯indexerror,最後一個元素的索引位置可以記為
索引序列還可以倒序排列,最後一個元素的位置是,依次往前數就是
同樣,超出索引範圍報錯indexerror,
追加與刪除
前面說了,list是個隨時可以添加刪除元素的有序序列
追加到末尾 append追加到指定位置 insert刪除末尾元素 pop刪除指定位置元素 pop替換指定位置元素直接向指定索引位置賦值
效果如下:
list內部的元素可以是不同數據類型,一個list也可以作為另一個list的元素,如下,Q這個list裡既有字符串,又有數值,又有布爾值;我們把之前的花名冊這個序列添加到Q的末尾,最終的Q序列裡面就有了四個元素,最後一個元素是另一個list序列花名冊,話有點繞,但還算好理解:
如果在Q中要取到木人張該如何操作?可以用表示,所以Q其實就是一個二維數組。
如果一個list為空,即裡面沒有元素,那麼他的長度也就len應該等於0
tuple
tuple叫做元組,它跟list最大的區別就是一旦初始化就不允許再變化,所謂初始化就是給它賦值。注意這裡跟list的區別,元組tuple的內容是以()括起來的,list是用[]
因為是不可變化的,自然就沒有辦法增加、刪除、替換元素了。元組內元素的定位跟list一樣,用[]擴住的序號表示,從第一位開始0,1,2….
tuple的不可變性強調了數據的安全性,對於不需要用戶交互變化的量,最好用tuple,能不用list就不用。
空tuple和1個元素的tuple
如果需要定義一個空的tuple,可以寫作()
如果是定義只有一個元素的的tuple,需要在單獨元素的後面加一個逗號, 否則就變成了給花名冊這個變量單獨賦值,因為這裡()等同於數學裡的小括號,Python規定這種情況下按數學的小括號計算,那麼這裡就變成了賦值的作用。
換成數字更容易理解,如下,我們給t這個變量賦值為2020,和我們給t這個元組賦值為只有一個2020數值的序列,如下。可以看到當我們輸出單一一個元素的元組時,Python也給我們在它後面加上了逗號,以避免與數學上的()混淆:
「可變的」tuple
可以看出,初始化的時候元組t包含了三個元素:a、b和一個list [『A』, 『B』]
當對t[2][0]和t[2][1]重新賦值後,看似元組t的內容發生了變化,但事實上,作為元組t,它的元素依然是a、b和最初的那個list,只不過list作為一個容器,裡面的內容發生了變化,而元組本身的內容並沒有變化。
這可以幫助我們理解什麼是tuple元組的「不變」其實說的是,但當一個元素指向的對象是一個list,這個list是可變的。