Python中的列表

2021-09-08 09:04:54 字數 2288 閱讀 3885

與元組不同,列表的長度是可變的,它所包含的內容也是可以修改的。你可以使用中括號[ ] 或是 list型別函式來定義列表,列表與元組非常相似(儘管元組不可修改),它們還是有許多函式用法是相似的。

list函式在資料處理中常用於將迭代器或者生成器轉化為列表:

gen = range(10)

list = list(gen)

list

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

1、增加和移除元素

可以將指定元素新增到列表尾部;

而使用insert方法可以將元素插入到指定的列表位置,插入位置的範圍在0到列表長度之間;(python中的序列索引是從0開始的)

insert的反操作是pop方法,該操作會將特定位置的元素移除並返回;

當然也可以通過remove方法

使用in關鍵字可以檢查乙個值是否在列表中;

not關鍵字可以用作in的反義詞,表示「不在」;

與字典、合集相比,檢查列表中是否包含乙個值是非常緩慢的,因為python中在列表進行了線性逐個掃瞄,而在字典和合集中python是同時檢查所有元素的。

向該列表新增多個元素。

請注意通過新增內容來連線列表是一種相對高代價的操作,這是因為連線過程中建立了新列表,並且還要構建乙個大型列表時使用extend方法比直接使用+號連線實現更快。

你可以呼叫列表的sort方法對列表進行內部排序(無須新建乙個物件):

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

a.sort()

a[1, 2, 3, 5, 7]

sort有一些選項偶爾會派上用場。其中一項就是傳遞乙個二級排序key——乙個用於生成排序值的函式。比如,我們可以通過字串的長度進行排序:

b = ['saw','small','he','foxes','six']

b.sort(key = len)

b['he', 'saw', 'six', 'small', 'foxes']

該方法可以針對通用序列產生乙個排序後的拷貝。

內建的bisect模組實現了二分搜尋和已排序列表的插值。

其中bisect.bisect會找到元素應當被插入的位置,並保持序列排序;

bisect.insort將元素插入到相應位置:

import bisect

c = [1,2,2,2,3,4,7]

bisect.bisect(c,2)

4bisect.bisect(c,5)6c

[1, 2, 2, 2, 3, 4, 7]

bisect.insort(c,6)

c[1, 2, 2, 2, 3, 4, 6, 7]

bisect模組的函式並不會檢查列表是否已經排序。因此,對未排序的列表使用bisect的函式雖然不會報錯,但可能會導致不正確的結果。

使用切片符號可以對大多數序列型別選取子集,它的基本形式是將start:stop傳入到索引符號[ ]中:

seq = [7,2,3,7,5,6,0,1]

seq[1:5]

[2,3,7,5]

切片還可以將序列賦值給變數:

seq[3,4] = [6,3]

seq[7,2,3,6,3,5,6,0,1]

由於起始位置start的索引是包含的,而結束位置stop的索引並不包含,當然start和stop是可以省略的,如果省略的話就會預設傳入序列的起始位置或結束位置。

負索引也可以從序列的尾部進行索引:

seq[-4: ]

[5,6,0,1]

seq[-6:-2]

[6,3,5,6]

其中正序的第乙個是從0開始,而倒序的第乙個是從-1開始。

步進值step可以在第二個冒號後面使用,意思是每隔多少個數取乙個值:

seq[::2]

[7,3,3,6,1]

而當你需要對列表或元組進行翻轉時,有一種很聰明的用法就是向步進傳值-1:

seq[::-1]

[1,0,6,5,3,6,3,2,7]

python大列表 Python中的列表

python社群的理想就是建立一款乾淨,簡單,完美的語言.學習了兩三天,真的感覺python的一切設計,都是為了解決曾經讓程式設計師感覺痛苦的問題.看到python的列表,再想想曾經的學習過的陣列.我的天,這不是我一直苦苦尋找的東西嗎?由於列表和以前學習過的陣列有很大的差異性,在此做了一些筆記,留作...

Python中的列表

1 idle缺省內置函式都是紫色,字串是綠色,關鍵字 如if 是橙色,生成的所有結果為藍色 2 python的變數識別符號沒有型別!但是識別符號指示的資料物件有型別。3 python列表可以包含各種型別的資料,也就是說在同乙個列表中,可以同時有字串和數字 4 for迴圈 可以實現迭代 for 目標識...

python中的列表

python的列表 first列表的建立 way1 利用符號 來建立列表。way2 通過list函式將其他型別的序列轉換為列表。1,2,3,4 1,2,3,4 tup 1,2,3,4,5 tup list tup tup 1,2,3,4,5 second列表的修改 單個元素的修改 索引找到元素重新賦...