列表是Python中最重要的數據類型,它使用的頻率非常非常的高,最大程度的發揮Python的靈活性。
和字符串一樣,列表的操作方法也有很多。如果說一頭鑽進去,可能會導致學習沒有重點。在這篇文章當中,首先九柄會跟大家介紹列表的基礎操作,然後我會跟大家去說一些列表這個數據類型常用的實戰操作。
爭取能夠對Python列表有一個大概的認識。
Python列表定義
首先我們來看一下列表的定義。列表通常用來存儲多個數據,每一個數據之間用逗號隔開,他們被稱爲元素,列表的左右兩邊帶有中括號。
a_list = [1, 2, 3, 4]
你可以把列表想象成是某種容器,你可以往這個容器裏面塞入任何的東西。並且列表當中的元素可以是任意的數據類型,你可以在一個列表當中同時存儲數字、字符串,甚至嵌套列表。
a_list = [1, "hello", ["new", "list"]]
當然,雖然列表可以存儲不同的數據類型,但是大多數情況下,裏面元素的數據類型是一樣的,你可以簡單理解他和其他的編程語言當中的數組差不多。
Python列表的基本操作
列表的基本操作分爲:增、刪、改、查。
- ”查“ 主要是去獲取列表的某一個元素或者是多個元素,通過索引和切片可以獲取。
- ”增“ 主要是對這個列表當中去添加一個新的元素。
- “刪” 主要指我們對列表當中的某元素進行刪除。
- “改”主要是這個對這個列表當中的元素去進行修改。
因爲列表本身有多個元素,我們可以獲取它的長度
a = [1, 2, 3]
print(len(a)) #3
Python列表索引
列表的索引的表示基本上和字符串的表示方法差不多,所以你可以直接引用字符串當中的操作,索引從0開始
man = [1, 2, 3]
print(man[1]) #2
print(man[0]) #1
索引可以是負數,表示倒數第幾個,也就是從列表的右邊數到左邊。索引爲 -1 表示獲取倒數第一個元素,索引爲 -2 表示獲取倒數第二個元素。爲什麼正序數的索引從 0 開始,倒序就不能從 0 開始呢?因爲索引爲 0 不能同時表示兩個元素,會造成指令的衝突。
print(man[-1]) #3
超出索引範圍報 IndexError 錯誤
print(man[8])
Python列表切片
列表的切片呢也基本上和字符串的切片差不多。所以我們可以直接用字符串切片的方法。切片的表示方法是:var[start: end]
。 start 表示開始位置的索引號,end 表示結束位置的索引號, 但是不包含 end。
girl = [1,2,3,4,5,6]
part_of_girl = girl[0:1]
print(part_of_girl) # [1]
切片的索引號也可以是負數,但是在使用的時候要確保 end 是在 start 的右邊,end - start > 0 。
print(girl[0: -2])
print(girl[-2: -4])
切片的索引號超出範圍是不會報錯的,取到盡頭爲止。
print(girl[0:100000000000])
切片的 start 和 end 都可以省略。
girl[1:]
girl[:-1]
girl[:]
切片可以加第三個參數, girl[start:end:step]
, 其實使用切片時,默認的步長是爲 1。
girl[0:3:2]
Python列表添加元素
列表當中添加一個新的元素,我們主要使用兩種方法。
第一種方法是使用 append 方法在列表的最後面添加一個元素。
a = [1, 2]
a.append(3)
# [1,2,3]
第二種方法是通過 insert 方法在某個索引的位置添加一個新的元素,對比一下和上一種方法的區別。
a = [1, 2]
a.insert(0, 3)
# [3,1,2]
Python 列表去除重複元素
在列表當中刪除元素的方式也有兩種。
第1種是通過remove方法移除指定的值。
a = ["a", "b"]
a.remove("a")
# ['b']
第2種是通過 Pop方法,刪除指定索引位置的值。
a = ["a", "b"]
a.pop(1)
# ['a']
如果想直接清空這個列表,那麼就可以使用clear方法。
a.clear()
比較常見的是,我們經常要對列表當中的元素去重,可以通過先轉化成集合類型,然後再轉回列表類型。
a = [1, 2, 1, 4, 2]
print(list(set(a)))
Python列表求和
有的時候呢,我們會在一個列表裏面去存儲很多的數據,並且要對整個列表當中所有的數據去求和,則可以使用 sum 函數
a = [1, 2, 1, 4, 2]
print(sum(a))
Python 列表排序
列表排序也是使用非常非常多的操作,對整個列表排序之後,可能會簡化之後的操作。 要實現排序,不一定非得實現排序算法,在Python當中,可以直接調用列表下面的sort 方法實現排序。
a = [1, 5, 3, 2]
a.sort()
如果想從大到小排序呢,我們可以再加上一個reverse參數。
a.sort(reverse=True)
Python列表推導式
列表推導式是我建議每一個Python初學者都掌握的一個進階技巧。它能夠極大的簡化一些列表的複雜操作,讓我代碼變得更加的優雅。列表推導式主要應用的場合,是對列表當中的每一個元素去進行同樣的操作,比如說我們想對一個列表當中的每一個元素都轉化成字符串,那麼就非常適合使用列表推導式來操作。
a = [1, 5, 3, 2]
b = [str(i) for i in a]
# b = ['1', '5', '3', '2']
總結
列表經常出現在初級Python程序員的面試題當中。如果你剛開始學Python,想找一份Python相關的工作,那麼在面試過程當中一般都會問到一些關於列表的面試題。
其中一個原因是列表確實用的頻率比較高,第2個原因是列表一種可變的數據類型,當對它去進行操作時候,比較容易出現bug,在面試當中,如果說對列表進行考覈的話,能夠稍微看出一個人的代碼功底。