Python 學習總結(三)——列表

序列型數據

有序的序列:字符產、列表、元組
有序列表的通用操作:

  1. 索引、分片、加、乘
  2. 檢查是否屬於序列
  3. 長度、最大、最小

無序列表:集合、字典

列表

列表創建:方括號+逗號
列表元素
  包含任意種類的對象元素,如:數字、字符串、自定義 對象、列表本身
有序:從左到右的位置順序
可修改:長度可變,元素可以修改

通用序列操作

一、索引:
  運用元素的序號,訪問一個元素。從左往右,第一個元素的序號爲0,到n-1;從右往左,第一個元素的序號是-1,到-n
二、切片:

  1. 用於訪問特定範圍內的元素,用法爲num[a : b : c],a是切片開始的元素編號,包括a;b是切片結束後剩下的第一個元素編號,相當於不包括b;c是切片訪問的步長
  2. 當c>0時,相當於從左往右進行訪問,此時需滿足a<=b;當c<0時,相當於從右往左進行訪問,此時需滿足a>=b。特別的,當a==b時,此時訪問的元素爲空,但是可以進行一些其他的操作,這個在後面會提到
  3. num[ a : b ]此時默認步長爲1;num[ : b ]此時默認從頭開始訪問;num[ a : ]此時默認從a開始訪問到列表最後一個元素;num[ : ]此時默認從頭訪問到尾;a、b既可用正數也可以用負數,只需要符合相應的大小關係即可
>>> num=[1,2,3,4,5,6]
>>> print(num[0:4:2])
[1, 3]
>>> print(num[0:])
[1, 2, 3, 4, 5, 6]
>>> print(num[::2])
[1, 3, 5]
>>> print(num[5:0:-2])
[6, 4, 2]
>>> print(num[1:1])
[]
>>> print(num[1:-1])
[2, 3, 4, 5]

三、序列相加
  可以用加號來拼接序列,但是僅限於相同類型的序列,例如列表+列表,但不能列表+字符串

四、乘法
  將序列與數x相乘時,將重複這個序列x次,然後創建一個新的序列。
  此方法的一大用處時用來初始化列表,類似於c++中的定義一個數組。我們知道[None]代表一個空列表,那麼我們將[None]乘上一定次數,就可以初始化一個列表了

a=[None]*1200 #這樣我們就初始化了一個可以存1200個元素的列表

五、成員資格
  檢驗特定的值是否包含在序列中,可以用運算符in。不同於前面提到的運算符,in運算符檢查完之後,會返回一個布爾值,即True或False。
  內置函數len(),max(),min()可以直接用於計算列表所包含的元素個數。在元素種類相同的情況下,max(),min(),可以返回最大、最小的元素。特別注意的是:對於字符串,從首位開始逐位比較ascii碼的大小。除此以外,max(),min()可以直接用於一些數的比較大小

>>> print("abcd">"abc")
True
>>> print("aacd">"abc")
False
>>> print("abcdee">"z")
False
>>> max("b","abd") #  min()同樣
'b'
>>> max(2,3,543,2345)
2345

六、基本的列表操作

  1. 修改列表:給元素賦值,用索引就可以給特定位置的元素賦值,ex: num[2]=2
  2. 刪除元素: 可以用del num[i] 刪除序號爲i的元素;用del num[i:j]刪除序號從i到j-1的元素
  3. 給切片賦值:訪問切片的方法上文已經提到了,切片賦值的功能非常強大。可以同時給多個元素賦值,也可以插入新的元素,也可以刪除原列表中的元素,還可以用於在原列表最後加上一段新的列表,只需用num[len(num) : ]=[ , ] 即可
>>> num=[1,2,3,4,5,6]
>>> num[1:3]=[7,8]   #  進行賦值修改
>>> print(num)
[1, 7, 8, 4, 5, 6]
>>> num[::2]=[10,11,12] #以2爲步長來進行修改
>>> print(num)
[10, 7, 11, 4, 12, 6]
>>> num[-1:1:-1]=[-1,-2,-3,-4] #從最後一位開始進行修改
>>> print(num)
[10, 7, -4, -3, -2, -1]
>>> num[1:1]=[1234]  #用一個新的序列代替那個位置的空切片
>                    #相當於添加了一個元素
>>> print(num)
[10, 1234, 7, -4, -3, -2, -1]
>>> num[:3]=[]       #相當於刪除對應位置的元素
>>> print(num)
[-4, -3, -2, -1]

七、列表方法

  1. append():將一個對象附加到列表的末尾,注意此操作無返回值,只修改列表
  2. clear():就地清空列表的內容
  3. copy():複製一個列表。常規的複製,只是將一個另一個名稱關聯到列表,兩者的改變實際上還是一致的。用copy()則可以避免這個問題的發生,它是將一個列表關聯到另一個列表的副本,兩者的變化不會相互影響
>>> a=[1,2,3]
>>> b=a
>>> b[1]=4
>>> print(a)
[1, 4, 3]
>>> a=[1,2,3]
>>> c=a.copy()
>>> c[1]=4
>>> print(a)
[1, 2, 3]
>>> print(c)
[1, 4, 3]
  1. count():計算指定元素在列表中出現的次數
  2. extend():將多個值附加到列表的尾部,返回的是被修改後的列表,這點與“加法”不同,除非專門複製,不會改變原列表的值。可以用切片達到同樣的效果
  3. index(),在列表中查找指定值第一次出現的索引
  4. insert(),將一個指定值插入列表。insert(i,x)將x插入到序號爲i的位置。同樣,可以用切片達到同樣的效果
  5. pop(),從列表中刪除一個元素,並返回這一個元素。pop是唯一既可以修改列表有返回一個非None的列表方法。通過使用pop()和append()我們也可以將列表變成一個(後進後出)或隊列(先進先出)
  6. remove(),刪除第一個爲指定值的元素,無返回值
  7. reverse() ,按相反順序排列列表中的元素,無返回值
  8. sort(),對列表進行就地排序,對原列表進行修改,無返回值。實際上這個函數可以用於任何一個序列,但是返回值總是一個列表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章