最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python列表的創(chuàng)建與刪除的操作指南

 更新時(shí)間:2025年12月07日 15:26:30   作者:咖啡の貓  
列表(list)是 Python 中最常用、最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)之一,它支持動(dòng)態(tài)擴(kuò)容、混合類(lèi)型、嵌套結(jié)構(gòu),幾乎無(wú)處不在,但你真的會(huì)創(chuàng)建和刪除列表嗎,本文給大家介紹了Python列表的創(chuàng)建與刪除的操作指南,需要的朋友可以參考下

一、前言

列表(list)是 Python 中最常用、最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)之一。
它支持動(dòng)態(tài)擴(kuò)容、混合類(lèi)型、嵌套結(jié)構(gòu),幾乎無(wú)處不在。

但你真的會(huì)“創(chuàng)建”和“刪除”列表嗎?

  • 空列表有幾種寫(xiě)法?哪種更快?
  • del、pop()、remove() 有什么區(qū)別?
  • 刪除元素后,內(nèi)存真的釋放了嗎?
  • 如何安全地清空一個(gè)被多個(gè)變量引用的列表?

本文將帶你: ? 掌握 6 種列表創(chuàng)建方式及適用場(chǎng)景
? 深入理解 4 種刪除操作的原理與差異
? 避開(kāi)“刪除后仍存在”的引用陷阱
? 學(xué)會(huì)高效清空與釋放內(nèi)存
? 寫(xiě)出安全、清晰、高性能的列表操作代碼

二、列表的創(chuàng)建方式

1. 字面量語(yǔ)法(最常用)

lst = [1, 2, 3]
empty = []

? 優(yōu)點(diǎn):簡(jiǎn)潔、高效、可讀性強(qiáng)
? 推薦:90% 場(chǎng)景首選

2. 使用list()構(gòu)造器

lst = list([1, 2, 3])   # 從可迭代對(duì)象創(chuàng)建
empty = list()          # 空列表
chars = list("hello")   # ['h', 'e', 'l', 'l', 'o']

? 適用:將字符串、元組、集合等轉(zhuǎn)為列表

注意:list() 比 [] 略慢(需函數(shù)調(diào)用開(kāi)銷(xiāo))

3. 列表推導(dǎo)式(List Comprehension)

squares = [x**2 for x in range(5)]  # [0, 1, 4, 9, 16]
evens = [x for x in range(10) if x % 2 == 0]

? 優(yōu)點(diǎn):簡(jiǎn)潔、高效、Pythonic
? 推薦:替代 for + append() 的首選

4. 重復(fù)操作符*

zeros = [0] * 5          # [0, 0, 0, 0, 0]
rows = [[0] * 3] * 2     # ? 危險(xiǎn)!見(jiàn)下文陷阱

重大陷阱:[[0]*3]*2 會(huì)創(chuàng)建多個(gè)引用指向同一個(gè)子列表!

matrix = [[0] * 3] * 2
matrix[0][0] = 1
print(matrix)  # [[1, 0, 0], [1, 0, 0]] ← 意外修改了兩行!

? 正確寫(xiě)法(用列表推導(dǎo)式):

matrix = [[0] * 3 for _ in range(2)]

5.copy()與deepcopy()(創(chuàng)建副本)

import copy

original = [1, [2, 3]]
shallow = original.copy()        # 淺拷貝
deep = copy.deepcopy(original)   # 深拷貝

? 用途:避免修改原列表(尤其含嵌套可變對(duì)象時(shí))

6. 動(dòng)態(tài)創(chuàng)建(空列表 +append/extend)

lst = []
for i in range(5):
    lst.append(i)

? 適用:無(wú)法預(yù)知元素?cái)?shù)量的場(chǎng)景
?? 性能:比列表推導(dǎo)式慢,盡量避免

三、列表的刪除操作詳解

方法作用返回值是否就地修改
del lst[index]按索引刪除無(wú)? 是
lst.pop(index)按索引刪除并返回值被刪元素? 是
lst.remove(value)按值刪除(首次匹配)無(wú)? 是
lst.clear()清空所有元素無(wú)? 是

1.del:按索引或切片刪除

lst = [1, 2, 3, 4]

del lst[1]      # 刪除索引1 → [1, 3, 4]
del lst[1:3]    # 刪除切片 → [1]
del lst         # 刪除整個(gè)變量(不再指向列表)

del lst 不是清空列表,而是解除變量名與對(duì)象的綁定。

2.pop():刪除并獲取元素

lst = [10, 20, 30]
last = lst.pop()      # 返回 30,lst → [10, 20]
first = lst.pop(0)    # 返回 10,lst → [20]

? 典型應(yīng)用:實(shí)現(xiàn)棧(pop())或隊(duì)列(pop(0),但效率低)

pop(0) 時(shí)間復(fù)雜度 O(n),大數(shù)據(jù)量建議用 collections.deque

3.remove():按值刪除(只刪第一個(gè))

lst = [1, 2, 2, 3]
lst.remove(2)  # 刪除第一個(gè)2 → [1, 2, 3]
lst.remove(99) # ValueError: list.remove(x): x not in list

? 建議:先判斷 if value in lst 再刪除,或捕獲異常

4.clear():清空列表(保留對(duì)象)

lst = [1, 2, 3]
lst.clear()  # lst → []

? 優(yōu)勢(shì):所有引用該列表的變量都會(huì)看到空列表

a = [1, 2, 3]
b = a
a.clear()
print(b)  # [] ← 因?yàn)?a 和 b 指向同一個(gè)對(duì)象

四、常見(jiàn)陷阱與避坑指南

陷阱 1:在遍歷中直接刪除元素(導(dǎo)致跳過(guò))

# 錯(cuò)誤!
nums = [1, 2, 3, 4, 5]
for x in nums:
    if x % 2 == 0:
        nums.remove(x)  # 修改正在遍歷的列表 → 跳過(guò)元素!

# 結(jié)果:nums = [1, 3, 4, 5] ← 4 沒(méi)被刪!

? 正確做法:

  • 遍歷副本:for x in nums[:]:
  • 或反向遍歷:for i in range(len(nums)-1, -1, -1):
  • 或使用列表推導(dǎo)式:nums = [x for x in nums if x % 2 != 0]

陷阱 2:誤以為del lst釋放了內(nèi)存

a = [1, 2, 3]
b = a
del a      # 只刪除 a 這個(gè)名字,列表對(duì)象仍被 b 引用
print(b)   # [1, 2, 3]

? 真正釋放內(nèi)存:當(dāng)所有引用都被刪除,Python 垃圾回收器才會(huì)回收對(duì)象。

陷阱 3:混淆lst = []與lst.clear()

def reset_list_bad(lst):
    lst = []  # 只改變局部變量,不影響外部!

def reset_list_good(lst):
    lst.clear()  # 就地清空,外部可見(jiàn)

? 如果需要讓函數(shù)修改傳入的列表,必須用 clear() 或切片賦值 lst[:] = []

五、性能對(duì)比(小貼士)

操作時(shí)間復(fù)雜度說(shuō)明
append()O(1)(攤還)高效
pop()(末尾)O(1)高效
pop(0) / insert(0, x)O(n)低效,用 deque 替代
remove(x)O(n)需線性查找
x in lstO(n)大列表建議用 set
clear()O(n)需釋放每個(gè)元素的引用

六、最佳實(shí)踐總結(jié)

場(chǎng)景推薦做法
創(chuàng)建空列表lst = []
從可迭代對(duì)象創(chuàng)建list(iterable)
條件過(guò)濾生成列表推導(dǎo)式 [x for x in ... if ...]
安全刪除遍歷中元素遍歷副本或用推導(dǎo)式
清空列表(多引用共享)lst.clear()
獲取并刪除末尾元素lst.pop()
按值刪除(確保存在)先 if x in lst 再 remove

核心原則
“就地修改” vs “創(chuàng)建新對(duì)象”要分清,
引用關(guān)系決定你的刪除是否生效。

七、結(jié)語(yǔ)

以上就是Python列表的創(chuàng)建與刪除的操作指南的詳細(xì)內(nèi)容,更多關(guān)于Python列表創(chuàng)建與刪除的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)現(xiàn)讀取Excel內(nèi)容并展示成json

    python實(shí)現(xiàn)讀取Excel內(nèi)容并展示成json

    這篇文章主要為大家詳細(xì)介紹了如何使用python實(shí)現(xiàn)讀取Excel內(nèi)容并展示成json功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2023-12-12
  • Python 如何訪問(wèn)外圍作用域中的變量

    Python 如何訪問(wèn)外圍作用域中的變量

    這篇文章主要介紹了Python 如何訪問(wèn)外圍作用域中的變量的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Python通過(guò)psd-tools解析PSD文件

    Python通過(guò)psd-tools解析PSD文件

    這篇文章主要介紹了Python通過(guò)psd-tools解析PSD文件,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06
  • 用python畫(huà)了個(gè)圣誕樹(shù)給女朋友

    用python畫(huà)了個(gè)圣誕樹(shù)給女朋友

    大家好,本篇文章主要講的是用python畫(huà)了個(gè)圣誕樹(shù)給女朋友,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python定義一個(gè)函數(shù)的方法

    Python定義一個(gè)函數(shù)的方法

    這篇文章主要介紹了Python定義一個(gè)函數(shù)的方法及相關(guān)實(shí)例,需要的朋友們可以學(xué)習(xí)參考下。
    2020-06-06
  • python套接字socket通信

    python套接字socket通信

    這篇文章主要介紹了python套接字socket通信,python標(biāo)準(zhǔn)庫(kù)中內(nèi)置了底層網(wǎng)絡(luò)接口socket,以下代碼均默認(rèn)from?socket?import?*,下文很多詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • Python scipy的二維圖像卷積運(yùn)算與圖像模糊處理操作示例

    Python scipy的二維圖像卷積運(yùn)算與圖像模糊處理操作示例

    這篇文章主要介紹了Python scipy的二維圖像卷積運(yùn)算與圖像模糊處理操作,涉及Python數(shù)學(xué)運(yùn)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • 詳解Python 循環(huán)嵌套

    詳解Python 循環(huán)嵌套

    這篇文章主要介紹了Python 循環(huán)嵌套的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 基于Python編寫(xiě)一個(gè)簡(jiǎn)單的電池提醒程序

    基于Python編寫(xiě)一個(gè)簡(jiǎn)單的電池提醒程序

    上周,同事因?yàn)橥洺潆?筆記本電腦在重要會(huì)議中突然關(guān)機(jī),尷尬不已,所以本文我們就來(lái)使用Python編寫(xiě)一個(gè)簡(jiǎn)單的電池提醒程序,感興趣的小伙伴可以了解下
    2025-07-07
  • python實(shí)現(xiàn)凱撒密碼

    python實(shí)現(xiàn)凱撒密碼

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)凱撒密碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04

最新評(píng)論

福建省| 安陆市| 灵台县| 锡林郭勒盟| 沾化县| 辽阳市| 乌恰县| 库伦旗| 星座| 红河县| 漯河市| 乐清市| 长垣县| 连城县| 浦东新区| 海兴县| 呼图壁县| 佛冈县| 法库县| 平昌县| 色达县| 黑山县| 渝中区| 巴彦淖尔市| 云梦县| 安远县| 镇平县| 浪卡子县| 宁陵县| 五华县| 梓潼县| 张北县| 普陀区| 博湖县| 大姚县| 广饶县| 衡东县| 永新县| 花莲县| 湘潭县| 乌苏市|