對Python列表常用的幾個函數

前言

上一篇文章簡單地介紹了什麼是 Python 列表和對其增刪改操作,生活中我們常常還需要對列表進行排序、反轉等操作,貼心的 Python 內置了函數幫助我們實現這些操作,Great!

jingxi

好了,廢話不多說,開始咯~


1. 使用方法sort()對列表進行永久性排序

Python 方法sort()讓你能夠較爲輕鬆地對列表進行排序。

sort()語法:list.sort(key=None, reverse=False)

參數:

  • key - 用於指定含一個參數的函數,該函數用於從列表中每個元素中提取比較鍵。換言之,這是用來設置列表中元素間比較規則的。默認是None表示直接以默認規則進行排序(單詞按首字母、數字按大小排序)。
  • reverse - 排序規則,reverse = True 降序, reverse = False 升序(默認)。

看到參數解釋後你可能會是這樣的↓

what

現在不理解沒關係,文中會舉例說明。

比如,你有一個汽車列表,並要讓其中的汽車按字母順序排列。你可以這樣寫:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)

運行這段代碼,方法sort()永久性地修改了列表元素的排列順序。現在汽車是按字母順序排列的,再也無法恢復到原來的排列順序,運行結果如圖1-1:

1-1

圖1-1

你還可以按與字母排列順序相反的順序排列列表元素。只需要向sort()方法中傳遞參數reverse = True 即可。代碼可以這樣寫:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)

因爲傳遞了參數reverse = True,所以運行結果會和圖1-1順序相反,結果如圖1-2:

1-2

圖1-2

這對元素的排列改變也是永久性的。

以上演示的都是 reverse 參數,接下來講解 key 參數的使用,使用這個參數我們可以自定義排序規則

比如,你有一個汽車列表,並要讓其中的汽車按最後一個字母排序。你可以這樣寫:

# elem指列表中的每一個元素
def last(elem):
    # 返回字符串最後一個字符作爲排序比較鍵
    return elem[-1]


cars = ['bmw', 'audi', 'toyota', 'subaru']
# key參數傳入的是帶有一個參數的函數名
cars.sort(key=last)
print(cars)

這段代碼很有意思,我們自定義了一個排序規則函數last,當然,函數名可以隨便取;有一個參數elem,事實上這個參數名也可以隨便取,指代列表中的每一個元素。last函數中 return elem[-1]的含義是返回列表中每個元素的最後一個字母作爲比較鍵。

程序運行時,會把列表cars中的每一個元素當作參數傳入last中,last函數返回每個元素的最後一個字母進行排序。結果如圖1-3:

1-3

圖1-3

2. 使用函數sorted()對列表進行臨時排序

要保留列表元素原來的排列順序,同時又想對列表進行排序,可以使用函數 sorted()

函數 sorted() 讓你能夠按特定順序顯示列表元素,同時不影響它們在列表中的原始排列順序。

sorted()語法:sorted(iterable, key=None, reverse=False)

參數:

  • iterable - 可迭代對象。列表屬於可迭代對象。
  • key - 用於指定含一個參數的函數,該函數用於從列表中每個元素中提取比較鍵。換言之,這是用來設置列表中元素間比較規則的。默認是None表示直接以默認規則進行排序(單詞按首字母、數字按大小排序)。
  • reverse - 排序規則,reverse = True 降序, reverse = False 升序(默認)。

**返回值:**返回一個新的排序列表

還是拿汽車列表舉個栗子:

cars = ['bmw', 'audi', 'toyota', 'subaru']

print("原始列表:")
print(cars)

print("\n排序的列表:")
print(sorted(cars))

print("\n原始列表:")
print(cars)

運行這段代碼,結果如圖2-1:

2-1

圖2-1

我們首先打印了原始順序的列表,在按首字母順序(升序)對列表進行排序,但這種排序是臨時的,不會改變原始列表的順序,最後我們再次打印原始列表以確認列表元素的排列順序與以前相同。

list.sort()方法很類似,你還可以按首字母降序排列列表元素,寫法也非常相似:

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(sorted(cars, reverse=True))

運行這段代碼,你會看到結果如圖2-2所示,按首字母降序排序:

2-2

圖2-2

看到這裏,你可能會想sorted()方法能不能自定義排序規則呢?

答案是肯定的,而且用法和 list.sort()還很像。

比如,你想讓汽車列表中的汽車按第三個字母進行降序排列,你可以這樣寫代碼:

# elem指列表中的每一個元素
def third(elem):
    # 返回元素的第三個字符作爲排序比較鍵
    return elem[2]


cars = ['bmw', 'audi', 'toyota', 'subaru']
# key參數傳入的是帶有一個參數的函數名,reverse=True表示降序排列
print(sorted(cars, key=third, reverse=True))

我們先自定義了一個排序規則函數third,以列表中元素的第三個字符作爲排序的比較鍵,接下來將這個函數作爲參數傳給sorted(),因爲是降序排列,所以reverse要設置爲True

運行代碼,結果如圖2-3:

2-3

圖2-3

sort()sorted()的區別:

  • sort() 是應用在 list 上的方法,sorted() 可以對所有可迭代的對象進行排序操作。

  • list 的 sort() 方法返回的是對已經存在的列表進行操作,而內建函數 sorted() 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。

3. 反轉列表

和排序方法一樣,列表反轉也有兩個方法:list.reverse()reversed()。因爲reversed()方法涉及到迭代器,現在還不適合講解,所以本文現階段只講解 list.reverse()

reverse()語法: list.reverse()

沒有參數,列表可直接調用

比如,你有一個汽車列表,使用reverse()方法可輕鬆地反向排列其中的汽車:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.reverse()
print(cars)

運行結果如圖3-1:

3-1

圖3-1

注意: reverse() 是反轉列表元素的排列順序,而且是永久性的。但你可以隨時恢復到原來的排序順序,只要再次調用reverse()即可。

4. 確定列表的長度

使用函數 len() 可快速獲悉列表的長度。

len()語法: list.len()

返回值: 列表長度

在下面的示例中,列表包含4個元素,因此其長度爲4:

4-1

注意: Python 計算列表元素個數時從1開始計數,返回的列表長度爲實際長度,不會差1。

結尾語

本文對列表中常見的幾個函數進行了簡單的講解,靈活運用Python內置函數對我們編寫程序幫助很大,既省時又省力,簡單實惠,何樂不爲?Python中還有大量的內置函數,以後用到了我再寫篇文章進行歸納。作爲計算機從業者,在學習時要多想、多練、多總結,這樣纔能有提高。

如果你在學習過程中有任何疑問,可以關注文章下方↓↓↓的公衆號及時與我聯繫,我們相互討論,共同學習。

最後,祝你學有所成。

公衆號-猿天罡

歡迎大家點贊、關注、收藏,我是Kelvin,我們下期再見,(ToT)/~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章