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

python 序列類型list示例詳解

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

列表定義

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

列表 list 構(gòu)建

list 構(gòu)建方法

使用一對(duì)方括號(hào)來表示空列表: []

使用方括號(hào),其中的項(xiàng)以逗號(hào)分隔: [a], [a, b, c]

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

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

示例

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

列表索引訪問

索引說明

使用append(object)方法在列表末尾添加一個(gè)元素,返回None。返回None就意味著沒有新的列表產(chǎn)生,就地修改。時(shí)間復(fù)雜度是O(1)。因?yàn)樗皇窃诹斜淼哪┪蔡砑右粋€(gè)元素,不會(huì)受到列表長度的影響。
使用insert(index, object)方法在指定位置添加一個(gè)元素,返回None。返回None就意味著沒有新的列表產(chǎn)生,就地修改。時(shí)間復(fù)雜度是O(n)。其中n是列表的長度。因?yàn)樵诓迦朐睾?,后面的元素需要向后移?dòng)以騰出空間。
使用extend(iteratable) 方法,將可迭代對(duì)象的元素追加進(jìn)來,返回None。可以將一個(gè)列表中的元素逐個(gè)添加到另一個(gè)列表的末尾。就地修改。時(shí)間復(fù)雜度為O(k),其中k是要添加到列表的元素?cái)?shù)量。由于它需要逐個(gè)添加元素,時(shí)間復(fù)雜度取決于要添加的元素?cái)?shù)量。
使用加號(hào)(+)運(yùn)算符,連接操作,將兩個(gè)列表連接起來。產(chǎn)生新的列表,原列表不變。本質(zhì)上調(diào)用的是__add__()方法。時(shí)間復(fù)雜度為O(m+n),其中m和n分別是兩個(gè)列表的長度。因?yàn)樗枰獎(jiǎng)?chuàng)建一個(gè)新的列表,并將原列表的元素逐個(gè)復(fù)制到新列表中。
使用列表解析,可以使用列表解析來添加元素到列表中。通常為O(n),其中n是生成的新列表的長度。

示例

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

列表元素修改

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

示例

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

列表添加元素

使用append(object)方法在列表末尾添加一個(gè)元素,返回None。返回None就意味著沒有新的列表產(chǎn)生,就地修改。時(shí)間復(fù)雜度是O(1)。因?yàn)樗皇窃诹斜淼哪┪蔡砑右粋€(gè)元素,不會(huì)受到列表長度的影響。
使用insert(index, object)方法在指定位置添加一個(gè)元素,返回None。返回None就意味著沒有新的列表產(chǎn)生,就地修改。時(shí)間復(fù)雜度是O(n)。其中n是列表的長度。因?yàn)樵诓迦朐睾?,后面的元素需要向后移?dòng)以騰出空間。
使用extend(iteratable) 方法,將可迭代對(duì)象的元素追加進(jìn)來,返回None??梢詫⒁粋€(gè)列表中的元素逐個(gè)添加到另一個(gè)列表的末尾。就地修改。時(shí)間復(fù)雜度為O(k),其中k是要添加到列表的元素?cái)?shù)量。由于它需要逐個(gè)添加元素,時(shí)間復(fù)雜度取決于要添加的元素?cái)?shù)量。
使用加號(hào)(+)運(yùn)算符,連接操作,將兩個(gè)列表連接起來。產(chǎn)生新的列表,原列表不變。本質(zhì)上調(diào)用的是__add__()方法。時(shí)間復(fù)雜度為O(m+n),其中m和n分別是兩個(gè)列表的長度。因?yàn)樗枰獎(jiǎng)?chuàng)建一個(gè)新的列表,并將原列表的元素逐個(gè)復(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中,使用乘號(hào)*可以將列表中的元素重復(fù)指定次數(shù)。這種操作會(huì)復(fù)制列表中的元素,然后按照指定次數(shù)進(jìn)行重復(fù)。對(duì)于列表乘法操作,時(shí)間復(fù)雜度取決于乘法操作符左側(cè)列表的長度和乘數(shù)。因此,如果原始列表長度為n,重復(fù)次數(shù)為m,則列表乘法的時(shí)間復(fù)雜度為O(n * m)。

修改重復(fù)后的列表不會(huì)影響原始列表。例如,對(duì)重復(fù)列表進(jìn)行修改不會(huì)改變?cè)剂斜碇械脑亍?/p>

乘法操作符只是復(fù)制列表中的引用,而不是復(fù)制對(duì)象本身。如果列表中的元素是可變對(duì)象(如列表或字典),修改其中一個(gè)列表的元素也會(huì)影響到另一個(gè)列表。這種淺拷貝行為可能會(huì)導(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]]

列表合并

使用加號(hào)操作符 (+)

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

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() 方法,它會(huì)將一個(gè)列表的所有元素添加到另一個(gè)列表的末尾。

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

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

需要在合并時(shí)對(duì)元素進(jìn)行某些操作時(shí),可以使用列表推導(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() 方法可以用于更高效地合并大量列表,它返回一個(gè)迭代器。這個(gè)方法在處理大量數(shù)據(jù)時(shí)很有幫助,因?yàn)樗粫?huì)立即創(chuàng)建一個(gè)新列表,而是通過迭代器按需生成元素。

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]

使用星號(hào)操作符 (*)

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

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,就從列表尾部彈出一個(gè)元素。指定索引index,就從索引處彈出一個(gè)元素,索引超界拋出IndexError錯(cuò)誤。
使用remove(value)方法從左至右查找第一個(gè)匹配value的值,移除該元素,返回None。就地修改。
使用clear()方法刪除所有元素。清除列表所有元素,剩下一個(gè)空列表。

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

my_list = ['apple', 'banana', 'cherry', 'date']
# 使用切片獲取列表中的前兩個(gè)元素
print(my_list[:2])  # 輸出: ['apple', 'banana']
# 使用切片獲取列表中的最后兩個(gè)元素
print(my_list[-2:]) # 輸出: ['cherry', 'date']
# 使用切片獲取列表中的第二個(gè)到倒數(shù)第二個(gè)元素
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()方法或者遍歷整個(gè)列表進(jìn)行查找。使用count()方法用于計(jì)算列表中某個(gè)元素出現(xiàn)的次數(shù)。

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

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

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

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

count(value)

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

count()方法的時(shí)間復(fù)雜度也為O(n),其中n為列表的長度。因?yàn)樵摲椒ㄐ枰闅v整個(gè)列表來統(tǒng)計(jì)指定元素的數(shù)量,所以在最壞的情況下,需要對(duì)列表中的每個(gè)元素進(jìn)行比較。

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

列表反轉(zhuǎn)

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

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

如果想要在不改變?cè)剂斜淼那闆r下返回一個(gè)新的有序列表,可以使用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]

列表的其它操作

運(yùn)算

結(jié)果:

備注

x in s

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

x not in s

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

s + t

s 與 t 相拼接

s * n 或 n * s

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

s[i]

s 的第 i 項(xiàng),起始為 0

s[i:j]

s 從 i 到 j 的切片

s[i:j:k]

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

len(s)

s 的長度

min(s)

s 的最小項(xiàng)

max(s)

s 的最大項(xiàng)

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

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

(8)

s.count(x)

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

s[i] = x

將 s 的第 i 項(xiàng)替換為 x

s[i:j] = t

將 s 從 i 到 j 的切片替換為可迭代對(duì)象 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 中移除所有項(xiàng) (等同于 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 次來對(duì)其進(jìn)行更新

s.insert(i, x)

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

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

提取在 i 位置上的項(xiàng),并將其從 s 中移除

s.remove(x)

刪除 s 中第一個(gè) s[i] 等于 x 的項(xiàng)目。

s.reverse()

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

常用方法

append(): 添加一個(gè)元素到列表的末尾。
extend(): 擴(kuò)展列表,添加多個(gè)元素到末尾。
insert(): 在指定位置插入一個(gè)元素。
remove(): 刪除列表中的一個(gè)元素。
pop(): 刪除并返回列表中的一個(gè)元素。
clear(): 清空列表。
index(): 返回列表中第一個(gè)匹配元素的索引。
count(): 返回列表中匹配元素的數(shù)量。
sort(): 對(duì)列表進(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 理解Django 中Call Stack機(jī)制的小Demo

    理解Django 中Call Stack機(jī)制的小Demo

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

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

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

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

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

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

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

    Python?OpenGL基本配置方式

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

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

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

    pytorch之scatter_的用法及說明

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

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

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

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

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

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

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

最新評(píng)論