欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 序列類型list示例詳解

 更新時間:2024年04月17日 10:00:07   作者:小吉貓  
列表(List)是一種有序的集合,可以包含任意類型的對象:數(shù)字、字符串甚至其他列表等,列表是可變的,這意味著我們可以添加、刪除或更改列表中的元素,這篇文章主要介紹了python 序列類型list示例詳解,需要的朋友可以參考下

列表定義

列表(List)是一種有序的集合,可以包含任意類型的對象:數(shù)字、字符串甚至其他列表等。列表是可變的,這意味著我們可以添加、刪除或更改列表中的元素。

列表 list 構(gòu)建

list 構(gòu)建方法

使用一對方括號來表示空列表: []

使用方括號,其中的項以逗號分隔: [a], [a, b, c]

使用列表推導(dǎo)式: [x for x in iterable]

使用類型的構(gòu)造器: list() 或 list(iterable)

示例

# 創(chuàng)建一個空列表
my_list = []
# 創(chuàng)建一個包含整數(shù)的列表
number_list = [1, 2, 3, 4, 5]
# 創(chuàng)建一個包含字符串的列表
string_list = ["apple", "banana", "orange"]
# 創(chuàng)建一個包含不同類型元素的列表
mixed_list = [1, "hello", True, 3.14 , [1, 2, 3]]

列表索引訪問

索引說明

使用append(object)方法在列表末尾添加一個元素,返回None。返回None就意味著沒有新的列表產(chǎn)生,就地修改。時間復(fù)雜度是O(1)。因為它只是在列表的末尾添加一個元素,不會受到列表長度的影響。
使用insert(index, object)方法在指定位置添加一個元素,返回None。返回None就意味著沒有新的列表產(chǎn)生,就地修改。時間復(fù)雜度是O(n)。其中n是列表的長度。因為在插入元素后,后面的元素需要向后移動以騰出空間。
使用extend(iteratable) 方法,將可迭代對象的元素追加進(jìn)來,返回None??梢詫⒁粋€列表中的元素逐個添加到另一個列表的末尾。就地修改。時間復(fù)雜度為O(k),其中k是要添加到列表的元素數(shù)量。由于它需要逐個添加元素,時間復(fù)雜度取決于要添加的元素數(shù)量。
使用加號(+)運算符,連接操作,將兩個列表連接起來。產(chǎn)生新的列表,原列表不變。本質(zhì)上調(diào)用的是__add__()方法。時間復(fù)雜度為O(m+n),其中m和n分別是兩個列表的長度。因為它需要創(chuàng)建一個新的列表,并將原列表的元素逐個復(fù)制到新列表中。
使用列表解析,可以使用列表解析來添加元素到列表中。通常為O(n),其中n是生成的新列表的長度。

示例

my_list = ['apple', 'banana', 'cherry', 'date']
# 使用正數(shù)索引獲取第二個元素
print(my_list[1])  # 輸出: banana
# 使用負(fù)數(shù)索引獲取倒數(shù)第二個元素
print(my_list[-2]) # 輸出: cherry

列表元素修改

可以通過索引直接修改列表中的元素。

示例

my_list = ['apple', 'banana', 'cherry', 'date']
# 修改列表中的第一個元素
my_list[0] = 'apricot'
print(my_list)  # 輸出: ['apricot', 'banana', 'cherry', 'date']

列表添加元素

使用append(object)方法在列表末尾添加一個元素,返回None。返回None就意味著沒有新的列表產(chǎn)生,就地修改。時間復(fù)雜度是O(1)。因為它只是在列表的末尾添加一個元素,不會受到列表長度的影響。
使用insert(index, object)方法在指定位置添加一個元素,返回None。返回None就意味著沒有新的列表產(chǎn)生,就地修改。時間復(fù)雜度是O(n)。其中n是列表的長度。因為在插入元素后,后面的元素需要向后移動以騰出空間。
使用extend(iteratable) 方法,將可迭代對象的元素追加進(jìn)來,返回None??梢詫⒁粋€列表中的元素逐個添加到另一個列表的末尾。就地修改。時間復(fù)雜度為O(k),其中k是要添加到列表的元素數(shù)量。由于它需要逐個添加元素,時間復(fù)雜度取決于要添加的元素數(shù)量。
使用加號(+)運算符,連接操作,將兩個列表連接起來。產(chǎn)生新的列表,原列表不變。本質(zhì)上調(diào)用的是__add__()方法。時間復(fù)雜度為O(m+n),其中m和n分別是兩個列表的長度。因為它需要創(chuàng)建一個新的列表,并將原列表的元素逐個復(fù)制到新列表中。
使用列表解析,可以使用列表解析來添加元素到列表中。通常為O(n),其中n是生成的新列表的長度。

示例

my_list = [1, 20, 3]
my_list.append(4)
print(my_list)  # 輸出 [1, 20, 3, 4]
my_list.insert(1, 15)
print(my_list)  # 輸出 [1, 15, 20, 3, 4]
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # 輸出:[1, 2, 3, 4, 5, 6]
list1 = [1, 2, 3]
list2 = [4, 5, 6]
concatenated_list = list1 + list2
print(concatenated_list)  # 輸出:[1, 2, 3, 4, 5, 6]
my_list = [x for x in range(5)]
print(my_list)  # 輸出:[0, 1, 2, 3, 4]

列表元素重復(fù)次數(shù)

在Python中,使用乘號*可以將列表中的元素重復(fù)指定次數(shù)。這種操作會復(fù)制列表中的元素,然后按照指定次數(shù)進(jìn)行重復(fù)。對于列表乘法操作,時間復(fù)雜度取決于乘法操作符左側(cè)列表的長度和乘數(shù)。因此,如果原始列表長度為n,重復(fù)次數(shù)為m,則列表乘法的時間復(fù)雜度為O(n * m)。

修改重復(fù)后的列表不會影響原始列表。例如,對重復(fù)列表進(jìn)行修改不會改變原始列表中的元素。

乘法操作符只是復(fù)制列表中的引用,而不是復(fù)制對象本身。如果列表中的元素是可變對象(如列表或字典),修改其中一個列表的元素也會影響到另一個列表。這種淺拷貝行為可能會導(dǎo)致意外結(jié)果。

示例

my_list = [1, 2, 3]
repeated_list = my_list * 3
print(repeated_list)  # 輸出:[1, 2, 3, 1, 2, 3, 1, 2, 3]
repeated_list = my_list * 3
repeated_list[0] = 5
print(repeated_list)  # 輸出:[5, 2, 3, 5, 2, 3, 5, 2, 3]
print(my_list)  # 輸出:[1, 2, 3]
my_list = [[1, 2], [3, 4]]
repeated_list = my_list * 2
repeated_list[0][0] = 5
print(repeated_list)  # 輸出:[[5, 2], [3, 4], [5, 2], [3, 4]]
print(my_list)  # 輸出:[[5, 2], [3, 4]]

列表合并

使用加號操作符 (+)

這種方法最直觀,適用于少量列表的快速合并。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = list1 + list2
print(merged_list)  # 輸出: [1, 2, 3, 4, 5, 6]

使用 extend() 方法

原地(in-place)修改列表,可以使用 extend() 方法,它會將一個列表的所有元素添加到另一個列表的末尾。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # 輸出: [1, 2, 3, 4, 5, 6]

使用列表推導(dǎo)式

需要在合并時對元素進(jìn)行某些操作時,可以使用列表推導(dǎo)式來連接列表。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = [item for sublist in [list1, list2] for item in sublist]
print(merged_list)  # 輸出: [1, 2, 3, 4, 5, 6]

使用 itertools.chain()

itertools.chain() 方法可以用于更高效地合并大量列表,它返回一個迭代器。這個方法在處理大量數(shù)據(jù)時很有幫助,因為它不會立即創(chuàng)建一個新列表,而是通過迭代器按需生成元素。

import itertools
list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = list(itertools.chain(list1, list2))
print(merged_list)  # 輸出: [1, 2, 3, 4, 5, 6]

使用星號操作符 (*)

這種方式不僅可以用于列表合并,還可以用于合并元組、集合等可迭代對象,提供很好的靈活性和可讀性。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = [*list1, *list2]
print(merged_list)  # 輸出: [1, 2, 3, 4, 5, 6]

列表刪除元素

使用del語句通過索引刪除元素。
使用pop([index])方法刪除元素。不指定索引index,就從列表尾部彈出一個元素。指定索引index,就從索引處彈出一個元素,索引超界拋出IndexError錯誤。
使用remove(value)方法從左至右查找第一個匹配value的值,移除該元素,返回None。就地修改。
使用clear()方法刪除所有元素。清除列表所有元素,剩下一個空列表。

my_list = [1, 15, 20, 3, 4]
del my_list[1]
print(my_list)  # 輸出 [1, 20, 3, 4]
popped_item = my_list.pop(2)
print(popped_item)  # 輸出 3
print(my_list)  # 輸出 [1, 20, 4]
my_list.remove(20)
print(my_list)  # 輸出 [1, 4]
my_list.clear()
print(my_list)  # 輸出 []

列表切片

切片(slice):切片允許你獲取列表中的一個子集。切片使用起始索引和結(jié)束索引來指定要提取的元素范圍,但不包括結(jié)束索引所指向的元素。你可以使用list[start:end]的形式來獲取從start到end-1索引范圍內(nèi)的元素。如果省略起始索引,Python會從列表的開頭開始。如果省略結(jié)束索引,Python會一直取到列表末尾。

my_list = ['apple', 'banana', 'cherry', 'date']
# 使用切片獲取列表中的前兩個元素
print(my_list[:2])  # 輸出: ['apple', 'banana']
# 使用切片獲取列表中的最后兩個元素
print(my_list[-2:]) # 輸出: ['cherry', 'date']
# 使用切片獲取列表中的第二個到倒數(shù)第二個元素
print(my_list[1:-1])# 輸出: ['banana', 'cherry']
# 使用步長為2獲取列表中的奇數(shù)索引元素
print(my_list[::2])  # 輸出: ['apple', 'cherry']
# 使用步長為2獲取列表中的偶數(shù)索引元素
print(my_list[1::2]) # 輸出: ['banana', 'date']
# 使用負(fù)步長翻轉(zhuǎn)列表
print(my_list[::-1]) # 輸出: ['date', 'cherry', 'banana', 'apple']

列表循環(huán)

for item in my_list:
    print(item)

列表推導(dǎo)式

squares = [x**2 for x in range(10)]
print(squares)  # 輸出 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

列表復(fù)制

復(fù)制列表主要有兩種方式:淺拷貝(Shallow Copy)和深拷貝(Deep Copy)。
淺拷貝的方法:直接賦值、列表的copy()方法、切片操作符[:]、或者list()構(gòu)造函數(shù)。
深拷貝的方法:copy模塊中的deepcopy()函數(shù)

示例

original_list = [1, 2, [3, 4]]
shallow_copied_list = original_list
print(original_list == shallow_copied_list)  # 輸出 True
# 修改淺拷貝后的列表
shallow_copied_list[0] = 5
shallow_copied_list[2][0] = 6
print(original_list)  # 輸出 [1, 2, [6, 4]]
print(shallow_copied_list)  # 輸出 [5, 2, [6, 4]]
import copy
original_list = [1, 2, [3, 4]]
deep_copied_list = copy.deepcopy(original_list)
print(original_list == deep_copied_list)  # 輸出 True
# 修改深復(fù)制后的列表
deep_copied_list[0] = 5
deep_copied_list[2][0] = 6
print(original_list)  # 輸出 [1, 2, [3, 4]]
print(deep_copied_list)  # 輸出 [5, 2, [6, 4]]

列表查詢

列表查詢通常指的是查找特定元素在列表中的索引或值。常見的列表查詢方法包括使用index()方法或者遍歷整個列表進(jìn)行查找。使用count()方法用于計算列表中某個元素出現(xiàn)的次數(shù)。

index(value,[start,[stop]])

使用index()方法可以查找指定元素在列表中的索引。

這種方法的時間復(fù)雜度為O(n),其中n為列表的長度。在最壞情況下,需要遍歷整個列表才能找到目標(biāo)元素,因此時間復(fù)雜度為O(n)。

my_list = [1, 2, 3, 4, 5]
index = my_list.index(3)
print(index)  # 輸出:2

count(value)

列表查詢中的count()方法用于計算列表中某個元素出現(xiàn)的次數(shù)。這個方法會遍歷整個列表,并統(tǒng)計指定元素出現(xiàn)的次數(shù)。

count()方法的時間復(fù)雜度也為O(n),其中n為列表的長度。因為該方法需要遍歷整個列表來統(tǒng)計指定元素的數(shù)量,所以在最壞的情況下,需要對列表中的每個元素進(jìn)行比較。

my_list = [1, 2, 2, 3, 3, 3]
count = my_list.count(3)
print(count)  # 輸出:3

列表反轉(zhuǎn)

可以使用reverse()方法對列表進(jìn)行反轉(zhuǎn)。將列表元素反轉(zhuǎn),返回None。就地修改。

示例

my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list)  # 輸出:[5, 4, 3, 2, 1]

列表排序

使用sort(key=None, reverse=False)方法可以對列表進(jìn)行排序,就地修改,默認(rèn)是升序排列??梢酝ㄟ^傳遞reverse=True參數(shù)進(jìn)行降序排序。key一個函數(shù),指定key如何排序。

對于包含字符串的列表,排序默認(rèn)按照字母順序排序,可以通過key參數(shù)傳遞自定義的排序函數(shù)。

如果想要在不改變原始列表的情況下返回一個新的有序列表,可以使用sorted()函數(shù)。

示例

my_list = [3, 1, 4, 1, 5, 9, 2, 6]
my_list.sort()
print(my_list)  # 輸出:[1, 1, 2, 3, 4, 5, 6, 9]
my_list.sort(reverse=True)
print(my_list)  # 輸出:[9, 6, 5, 4, 3, 2, 1, 1]
str_list = ['apple', 'banana', 'orange', 'grape']
str_list.sort(key=len)  # 按照字符串長度排序
print(str_list)  # 輸出:['apple', 'grape', 'banana', 'orange']
my_list = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_list = sorted(my_list)
print(my_list)      # 輸出:[3, 1, 4, 1, 5, 9, 2, 6]
print(sorted_list)  # 輸出:[1, 1, 2, 3, 4, 5, 6, 9]

列表的其它操作

運算

結(jié)果:

備注

x in s

如果 s 中的某項等于 x 則結(jié)果為 True,否則為 False

x not in s

如果 s 中的某項等于 x 則結(jié)果為 False,否則為 True

s + t

s 與 t 相拼接

s * n 或 n * s

相當(dāng)于 s 與自身進(jìn)行 n 次拼接

s[i]

s 的第 i 項,起始為 0

s[i:j]

s 從 i 到 j 的切片

s[i:j:k]

s 從 i 到 j 步長為 k 的切片

len(s)

s 的長度

min(s)

s 的最小項

max(s)

s 的最大項

s.index(x[, i[, j]])

x 在 s 中首次出現(xiàn)項的索引號(索引號在 i 或其后且在 j 之前)

(8)

s.count(x)

x 在 s 中出現(xiàn)的總次數(shù)

s[i] = x

將 s 的第 i 項替換為 x

s[i:j] = t

將 s 從 i 到 j 的切片替換為可迭代對象 t 的內(nèi)容

del s[i:j]

等同于 s[i:j] = []

s[i:j:k] = t

將 s[i:j:k] 的元素替換為 t 的元素

del s[i:j:k]

從列表中移除 s[i:j:k] 的元素

s.append(x)

將 x 添加到序列的末尾 (等同于 s[len(s):len(s)] = [x])

s.clear()

從 s 中移除所有項 (等同于 del s[:])

s.copy()

創(chuàng)建 s 的淺拷貝 (等同于 s[:])

s.extend(t) 或 s += t

用 t 的內(nèi)容擴(kuò)展 s (基本上等同于 s[len(s):len(s)] = t)

s *= n

使用 s 的內(nèi)容重復(fù) n 次來對其進(jìn)行更新

s.insert(i, x)

在由 i 給出的索引位置將 x 插入 s (等同于 s[i:i] = [x])

s.pop() 或 s.pop(i)

提取在 i 位置上的項,并將其從 s 中移除

s.remove(x)

刪除 s 中第一個 s[i] 等于 x 的項目。

s.reverse()

就地將列表中的元素逆序。

常用方法

append(): 添加一個元素到列表的末尾。
extend(): 擴(kuò)展列表,添加多個元素到末尾。
insert(): 在指定位置插入一個元素。
remove(): 刪除列表中的一個元素。
pop(): 刪除并返回列表中的一個元素。
clear(): 清空列表。
index(): 返回列表中第一個匹配元素的索引。
count(): 返回列表中匹配元素的數(shù)量。
sort(): 對列表進(jìn)行排序。
reverse(): 反轉(zhuǎn)列表。

參考文檔

https://docs.python.org/zh-cn/3.12/library/stdtypes.html#/list

到此這篇關(guān)于python 序列類型list示例詳解的文章就介紹到這了,更多相關(guān)python 序列類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 理解Django 中Call Stack機制的小Demo

    理解Django 中Call Stack機制的小Demo

    這篇文章主要介紹了理解Django 中Call Stack 機制的小Demo,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • dpn網(wǎng)絡(luò)的pytorch實現(xiàn)方式

    dpn網(wǎng)絡(luò)的pytorch實現(xiàn)方式

    今天小編就為大家分享一篇dpn網(wǎng)絡(luò)的pytorch實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python的列表推導(dǎo)式你了解嗎

    Python的列表推導(dǎo)式你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python的列表推導(dǎo)式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 解決reload(sys)后print失效的問題

    解決reload(sys)后print失效的問題

    這篇文章主要介紹了解決reload(sys)后print失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python?OpenGL基本配置方式

    Python?OpenGL基本配置方式

    這篇文章主要介紹了Python?OpenGL基本配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python實現(xiàn)差分隱私Laplace機制詳解

    python實現(xiàn)差分隱私Laplace機制詳解

    今天小編就為大家分享一篇python實現(xiàn)差分隱私Laplace機制詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • pytorch之scatter_的用法及說明

    pytorch之scatter_的用法及說明

    這篇文章主要介紹了pytorch之scatter_的用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作

    python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作

    這篇文章主要介紹了python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 在Django的視圖(View)外使用Session的方法

    在Django的視圖(View)外使用Session的方法

    這篇文章主要介紹了在Django的視圖(View)外使用Session的方法,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • PyQt5入門之基于QListWidget版本實現(xiàn)圖片縮略圖列表功能

    PyQt5入門之基于QListWidget版本實現(xiàn)圖片縮略圖列表功能

    這篇文章主要介紹了PyQt5入門之基于QListWidget版本實現(xiàn)圖片縮略圖列表功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09

最新評論