python中關於列表的小案例(python列表筆記)

本文目錄一覽:

Python學習小技巧之列表項的排序

Python學習小技巧之列表項的排序

本文介紹的是關於Python列表項排序的相關內容,分享出來供大家參考學習,下面來看看詳細的介紹:

典型代碼1:

data_list = [6, 9, 1, 3, 0, 10, 100, -100]

data_list.sort()

print(data_list)

輸出1:

[-100, 0, 1, 3, 6, 9, 10, 100]

典型代碼2:

data_list = [6, 9, 1, 3, 0, 10, 100, -100]

data_list_copy = sorted(data_list)

print(data_list)

print(data_list_copy)

輸出2:

[6, 9, 1, 3, 0, 10, 100, -100]

[-100, 0, 1, 3, 6, 9, 10, 100]

應用場景

需要對列表中的項進行排序時使用。其中典型代碼1是使用的列表自身的一個排序方法sort,這個方法自動按照升序排序,並且是原地排序,被排序的列表本身會被修改;典型代碼2是調用的內置函數sort,會產生一個新的經過排序後的列表對象,原列表不受影響。這兩種方式接受的參數幾乎是一樣的,他們都接受一個key參數,這個參數用來指定用對象的哪一部分為排序的依據:

data_list = [(0, 100), (77, 34), (55, 97)]

data_list.sort(key=lambda x: x[1]) # 我們想要基於列表項的第二個數進行排序

print(data_list)

[(77, 34), (55, 97), (0, 100)]

另外一個經常使用的參數是reverse,用來指定是否按照倒序排序,默認為False:

data_list = [(0, 100), (77, 34), (55, 97)]

data_list.sort(key=lambda x: x[1], reverse=True) # 我們想要基於列表項的第二個數進行排序,並倒序

print(data_list)

[(0, 100), (55, 97), (77, 34)]

帶來的好處

1. 內置的排序方法,執行效率高,表達能力強,使代碼更加緊湊,已讀

2. 靈活的參數,用於指定排序的基準,比在類似於Java的語言中需要寫一個comparator要方便很多

其它說明

1. sorted內置函數比列表的sort方法要適用範圍更廣泛,它可以對除列表之外的可迭代數據結構進行排序;

2. list內置的sort方法,屬於原地排序,理論上能夠節省內存的消耗;

總結

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助

四、 python中的數據類型——列表

列表是一種有序的集合,有點類似c裡面的數組。它的特點是,可以隨時向裡面添加或刪除其中的元素,在python中經常用來存放數據。列表的特點是中括弧,內部元素用逗號隔開。

在這個列表中,可以放進去任何元素,不論你的元素是字元串、整型、浮點型、還是布爾值、空值,包括列表什麼的,都可以放進去。

元素與元素之間,用逗號隔開。

列表會為每個元素分配序號,這個序號代表它的位置,稱為索引(index),第一個元素的位置是0,第二個元素是1,以此類推。

使用索引獲取列表中的值時,需要使用中括弧來訪問,在中括弧前面加上列表名,中括弧內部是元素的索引。

0代表第一個元素的位置,1代表第二個,-1代表倒數第一個,-2代表倒數第二個

使用 len() 函數,可以查看列表裡面有多少個元素

在python中,列表的操作是非常的靈活的,我們可以向其中添加或刪除元素。

添加使用 list.append() 函數

list.append() 函數是將元素插入到列表的末尾,當我們想在特定位置插入元素時可以使用 list.insert() 函數

list.insert() 函數接受兩個參數,第一個參數是插入位置,第二個參數是要插入的元素。

需要注意的是,在使用append和insert時,必須在前面註明要操作的列表。就像上面的例子,我們要操作classmates這個列表,所以必須寫成 classmates.append() 或 classmates.insert() ,如果不這麼寫,計算機就不知道你要往哪個列表中加入元素。

沒有特殊情況的話,推薦使用append()函數添加元素,因為使用append的時候,元素默認加在列表尾部,不會造成其他元素索引值的改變。如果使用insert的話,就像上面的insert(1,’Tom’),在位置1插入’Tom’後,Tom後面所有的元素,索引值都加了一個1,列表中元素越多,受影響的程度越大,因此使用append()函數要比insert()函數更快。

刪除列表中元素的方法有三種

del後面需要用索引的方式表明要刪除的元素,也就是上面的例子,names[1]代表names中的第二個元素,使用del即可刪除

list.pop() 函數與del差不多,都是使用索引值進行刪除,只不過寫法不同。

我們可以發現,執行 names.pop(1) 後,python shell列印出了第二個元素的值,也就是我們要刪除的那個值,這是因為 pop() 這個函數,是有返回值的,有時候我們需要使用這個值,這個時候就可以用變數存起來。

這樣我們就可以通過調用a而使用剛才刪掉的元素了。

list.remove() 函數的作用是刪除第一個匹配的元素,上面的例子中,names這個列表裡面,有兩個’Bob’,remove函數只刪除了第一個’Bob’。這就是 list.remove() 函數的特點。

有時候我們想使用列表的前10個元素,或者前n個元素,這時候就應該使用列表的切片。

切片和索引類似,都是使用中括弧,區別是,索引中的中括弧裡面只有一個數,而切片不同。切片是切割列表,形成切割下來的部分形成新的列表。

切片: list[start:end:[step=1]] ,這就是切片的表達式,要求start和end兩者必須有一個,step不是可以不指定,不指定的時候默認為1。

切片該怎麼理解呢,start就是開始的位置,end就是結束的位置。切片有個特點是「取前不取後」,看上面那個例子可以發現,1作為start,3作為end,1代表第二個元素,3代表第四個元素,列表切片的時候,是不取後面的那個數字對應的元素的,也就是不取第四個元素,所以names[1:3]只取了第二個元素和第三個元素,這就是所謂的取前不取後。

再看下一個例子。

當不指定start或者end的時候,start默認為0,end默認為最後一個元素的索引值+1,因為「取前不取後」,要想取到最後一個元素,必須加個1才行。

上例中,用 len(numbers) 表示了最後一個元素的索引值,因為索引值從0開始,最後一個元素的索引值一定是列表內元素個數-1,根據「取前不取後」,在end位置上的數字應該+1,所以最後就等於 len(numbers) 了。

當不設定start和end的時候,就默認取所有的元素了。

當加入step,這個選項後,step代表步長,默認為1,設定成2的時候,就是隔一個取一個,設定成3時就是隔兩個取一個。

上例中,第一個切片,start和end均未設定,因此從第一個元素開始,隔一個取一個,得到了所有奇數位置的元素。

第二個切片,start設定為了1,因此取了所有偶數位置的元素。

3在列表中,0不在列表中,所以 3 in a 是True,而 0 in a 是False

更多關於列表的信息可以通過使用 help(list) 查看幫助文檔。

eval 的用法,以及python中推導列表的案例

a = [[1,2,3],[2,4,5],[1,2,3]]

for i in range(len(a[0])):       第一種方法

…     a[0][i],a[1][i],a[2][i]               此為tuple形式

(1, 2,1)

(2, 4,2)

(3, 5,3)

for i in range(len(a[0])):

…   print([a[0][i],a[1][i],a[2][i]])       注意括弧決定了輸出 的形式

[1, 2,1]                                             

[2, 4,2]

[3, 5,3]

eval(“a[0]”)

[1, 2,3]

eval(“a[0][0]”)

1

eval(“a[0][0],a[1][0],a[2][0]”)

(1, 2,1)

a =[[1,2,3],[2,4,5],[1,2,3]]        第二種方法

s = “”                 定義一個 為s的字元串

l = []                 定義一個為l 的列表

for i in range(len(a[0])):i大循環是a[][]第二個括弧里的值

…     for j in range(len(a)):j是a[][]第一個括弧里的值

…         s += “a[%s][%s],” % (j,i)  輸出的格式把前面的加上

…     l.append(s)  三個為一組添加到 l 列表裡

…     s = “”        s字元串重新置空,開始第二次循環

l

     第一次循環結果               置空後第二次循環結果

[‘a[0][0],a[1][0],a[2][0],’,’a[0][1],a[1][1],a[2][1],’,’a[0][2],a[1][2],a[2][2],’]

    置空後第三次循環結果

[eval(i) for i in l]   循環l里的三個元素 並輸出結果

[(1,2, 1), (2, 4, 2), (3, 5, 3)]

I

原創文章,作者:D0QCT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127903.html

(1)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
D0QCT的頭像D0QCT
上一篇 2024-10-03 23:16
下一篇 2024-10-03 23:16

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29

發表回復

登錄後才能評論