Python入門 數據結構 list列表

list列表和dict字典是Python最常用的數據結構,其次tuple元組,最後set集合;set集合只有一些特殊場景會用到。

列表是一種有序的集合,可以隨時添加和刪除其中的元素,是Python中最基本的數據結構之一。

一、列表定義

list列表定義使用中括弧 [] ,裡面數據可以是任意類型,也包括列表本身,也可以是字典、元組等。

list1 = [Google, woodman, 1987, 2017]nlist2 = [1, 2, 3, 4, 5 ]nlist3 = ["a", "b", "c", "d"]nlist4 = [2017, A, True, list1, list2] # 列表中可以嵌套列表,字典,元組等n

注意:列表裡面數據可以是任意數據類型,它的長度也是可變的,這就是動態類型好處。

二、訪問列表

list列表(序列)中的每個元素都分配一個數字索引,從0開始,第一個索引是0,第二個索引是1,依此類推。

我們可以通過索引號訪問列表的值,如:

l = [Google, woodman, 1987, 2017]nprint(l[0]=, l[0])nprint(l[1]=, l[1])nprint(l[3]=, l[3])nprint(l[-1]=, l[-1]) # 可以倒序訪問列表,-1列表倒數第一個nprint(l[4]=, l[4]) # 此行會報錯,拋出IndexError異常,列表下標越界n

注意:訪問list時索引號不能越界,不然會拋出IndexError異常

三、修改和新增列表的值

我們可以對列表的數據項進行修改。可以直接通過索引號修改列表的值,也可以通過append()方法對列表增加值。

l = [Google, woodman, 1987, 2017]nprint(原列表, l)nn# 修改列表第二個值nl[1] = 中國人 nprint(修改後的列表, l)nn# 在列表的末尾追加值nl.append(末尾追加元素) nprint(新增值後的列表, l)n

拓展:

可以使用insert(index,vaule)方法在列表指定位置插入值,它接受兩個參數,第一個參數為索引號,第二個參數是待添加的新元素。(insert()方法很少用到,了解知道有這個東西就可以,重點在append()末尾追加)

示例:

# 在第二個位置插入,插入後 後面元素向後移一位nl.insert(1, 知乎)nprint(l)n

四、刪除元素

刪除元素的方法有del、 pop()、remove() ,最常用到的是pop(),其次remove(),最後才是del。

del 、 pop()、remove() 他們之間存在明顯的區別,

1、del 通過指定具體值刪除

del 是 Python 內置用於刪除變數的引用(如果比較難理解,你可認為他是刪除變數),list列表中的值其實都是一個一個的變數如list[0]、list[1]、list[2]都是他們的變數名。

我們要刪除一個變數,直接 【del 變數名】,之後引用變數就會拋出異常。

a=1ndel a # 刪除變數a,解除a對1的引用 nprint(a) # 出現NameError 異常,沒有a這個變數nnl = [Google, woodman, 1987, 2017]nprint(l)nndel l[0] # 刪除列表第一個元素nprint(l) # 輸出 [woodman, 1987, 2017]nndel l[0:2] # 刪除列表第一到第二個元素nprint(l)ndel l # 刪除整個列表nprint(l) # 列表無法訪問,拋出NameError,提示無l這個變數n

2、pop() 通過索引號刪除

l.pop(索引號) 是list 內置方法,通過列表索引號來刪除list元素的方法;不指定索引號時刪除最後一個元素。pop() 一次只能刪除一個元素。

l = [Google, woodman, 1987, 2017]nl.pop() # 刪除最後一個元素nprint(l)nl.pop(0) # 刪除列表第一個元素nprint(l)nnl1 = [1] # 定義一個新列表,只有一個值 nprint(l1)nl1.pop() # 刪除列表的值nprint(l1) # 輸出的是一個空列表,l1列表還存在n

3、remove() 刪除首個符合條件的元素

l.remove() 列表內置的方法,他是根據給定值查找列表,找到符合條件的第一個值刪除,它也只能一次刪除一個。

l = [Google, woodman, 1987, 2017, 1987, woodman]nprint(l)nl.remove(1987) # 刪除1987nprint(l) # 注意觀察值的變化,只刪除了前一個1987nnl.remove(woodman) # 刪除 『woodman』nprint(l)nnl.remove(2) # 刪除不存在的值會拋出ValueError異常n

五、列表切片

列表切片和字元串切片差不多,可以分為以下幾類。

1、獲取多個元素的值

list[初始位置:結束位置]。如:list[0:N],取前N個元素也就是索引為0-(N-1)的元素,從0開始取到list的索引號N-1為止,不包含索引號為N的元素。

l = [Google, woodman, 1987, 2017, a, 1, 2, 3]nprint(l[0:2]) # 第1到第2個nprint(l[2:15]) # 2到15個,注意如果結束位超過列表長度不會報錯n

2、通過步長截取

list[初始位置:結束位置:步長] , 步長表示每多少個取一個。如:list[0:N:M] 從0開每M個數取一個直到list的N-1元素為止。

l = [Google, woodman, 1987, 2017, a, 1, 2, 3]nprint(l[0:4:2]) # 每2個數去1個,從第1到第4個n# 輸出 [Google, 1987]nprint(l[2::3]) # 從第3個取,每3個取一個,取到結尾n# 輸出 [1987, 1]n

3、花式用法

l = [Google, woodman, 1987, 2017, a, 1, 2, 3]nprint(l[:3]) # 從開始到list第3個元素nprint(l[1:]) # 從第二個到list結束nprint(l[:]) # 獲得一個與l相同的listnprint(l[-1]) # 取倒數第一個元素nprint(l[::-1]) # list倒敘nprint(l[-3:-1]) # 倒數第三個到第二個nprint(l[-4:-1:2]) # 從倒數第4個每2個取一個,到代數第二個n

六、列表常用運算

l1 = [1, 2, 3] + [a, b, c] # 連接nprint(l1)nl2 = [Hello!] * 4 # 重複複製nprint(l2)nbool1 = a in l1 # 元素是否存在nprint(bool1)n

七、list列表常用函數

len(list) 返回列表的長度

max(list) 返回列表中元素最大值,必須是相同類型對比

min(list) 返回列表元素最小值,必須是相同類型對比

list(tuple) 將元組轉換為列表

l = [Google, woodman, 1987, 2017, a, 1, 2, 3]nprint(len(l)) # 列表元素個數nl1 = [aA, bss, Ad]nprint(max(l1)) # 返回列表元素最大值,l1列表值必須是同類型nl2 = [6, 2, 3, 5, 1]nprint(min(l1)) # 返回列表元素最小值,l1列表值必須是同類型nt = (1987, 2017, a, 1, 2, 3)nprint(list(t)) # 將元組轉換為列表n

八、list列表常用方法

  1. list.append(obj)tt#在列表末尾添加新的對象
  2. list.count(obj)ttt#統計某個元素在列表中出現的次數
  3. list.extend(seq)tt#在列表末尾一次性追加另一個序列中的多個值
  4. list.index(obj)ttt#從列表中找出第一個匹配項的索引位置
  5. list.insert(index, obj)t#將對象插入列表index位置
  6. list.pop(obj=list[-1])t#移除列表中的一個元素(默認最後一個),返回移除值
  7. list.remove(obj)tt#移除列表中的第一個匹配到的值
  8. list.reverse()ttt#反向列表中元素
  9. list.sort([func])tt #對原列表進行排序
  10. list.clear()ttt#清空列表
  11. list.copy()tttt#複製列表

注意:Python一切皆對象,變數時對象,函數式對象,方法是對象,類是對象,他的一切都是對象

l = [Google, woodman, 1987, 2017, a, 1, 2, 3]nl1 = [7, 8, 9]nnl.append(a) # 在列表末尾添加新的對象nprint(l)nprint(l.count(a)) # 統計某個元素在列表中出現的次數nnl.extend(l1) # 在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)nprint(l)nnl.index(1987) # 從列表中找出某個值第一個匹配項的索引位置nprint(l)nnl.insert(2, woodman) # 將對象插入列表nprint(l)nnl.pop() # 移除列表中的一個元素(默認最後一個元素),並且返回該元素的值nprint(l)nnl.remove(a) # 移除列表中某個值的第一個匹配項nnl.reverse() # 反向列表中元素nprint(l)nnl2 = l.copy() # 複製列表nprint(l2)nnl.clear() # 清空列表nprint(l)nnl3 = [3, 4, 2, 9, 4]nl3.sort() # 對原列表進行排序nprint(l3)n

2018年1月26日,第一次修改,優化表達方式,代碼示例優化


推薦閱讀:

Python黑帽編程1.1虛擬機安裝和配置 Kali Linux 2016
Python3 str在內存中的存儲方式?
seaborn可視化學習之distribution visualization
Scrapy學習實例(二)採集無限滾動頁面

TAG:Python | Python入门 | Python教程 |