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

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

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

一、前言

列表(list)是 Python 中最常用、最靈活的內置數據結構之一。
它支持動態(tài)擴容、混合類型、嵌套結構,幾乎無處不在。

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

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

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

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

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

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

? 優(yōu)點:簡潔、高效、可讀性強
? 推薦:90% 場景首選

2. 使用list()構造器

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

? 適用:將字符串、元組、集合等轉為列表

注意:list() 比 [] 略慢(需函數調用開銷)

3. 列表推導式(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)點:簡潔、高效、Pythonic
? 推薦:替代 for + append() 的首選

4. 重復操作符*

zeros = [0] * 5          # [0, 0, 0, 0, 0]
rows = [[0] * 3] * 2     # ? 危險!見下文陷阱

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

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

? 正確寫法(用列表推導式):

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)   # 深拷貝

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

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

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

? 適用:無法預知元素數量的場景
?? 性能:比列表推導式慢,盡量避免

三、列表的刪除操作詳解

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

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

lst = [1, 2, 3, 4]

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

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

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

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

? 典型應用:實現棧(pop())或隊列(pop(0),但效率低)

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

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

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

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

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

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

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

a = [1, 2, 3]
b = a
a.clear()
print(b)  # [] ← 因為 a 和 b 指向同一個對象

四、常見陷阱與避坑指南

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

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

# 結果:nums = [1, 3, 4, 5] ← 4 沒被刪!

? 正確做法:

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

陷阱 2:誤以為del lst釋放了內存

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

? 真正釋放內存:當所有引用都被刪除,Python 垃圾回收器才會回收對象。

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

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

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

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

五、性能對比(小貼士)

操作時間復雜度說明
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)需釋放每個元素的引用

六、最佳實踐總結

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

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

七、結語

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

相關文章

  • python實現讀取Excel內容并展示成json

    python實現讀取Excel內容并展示成json

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

    Python 如何訪問外圍作用域中的變量

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

    Python通過psd-tools解析PSD文件

    這篇文章主要介紹了Python通過psd-tools解析PSD文件,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06
  • 用python畫了個圣誕樹給女朋友

    用python畫了個圣誕樹給女朋友

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

    Python定義一個函數的方法

    這篇文章主要介紹了Python定義一個函數的方法及相關實例,需要的朋友們可以學習參考下。
    2020-06-06
  • python套接字socket通信

    python套接字socket通信

    這篇文章主要介紹了python套接字socket通信,python標準庫中內置了底層網絡接口socket,以下代碼均默認from?socket?import?*,下文很多詳細內容需要的小伙伴可以參考一下
    2022-04-04
  • Python scipy的二維圖像卷積運算與圖像模糊處理操作示例

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

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

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

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

    基于Python編寫一個簡單的電池提醒程序

    上周,同事因為忘記充電,筆記本電腦在重要會議中突然關機,尷尬不已,所以本文我們就來使用Python編寫一個簡單的電池提醒程序,感興趣的小伙伴可以了解下
    2025-07-07
  • python實現凱撒密碼

    python實現凱撒密碼

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

最新評論

韩城市| 新津县| 河北省| 长岭县| 泰宁县| 富阳市| 庄浪县| 合山市| 龙州县| 辽宁省| 腾冲县| 垦利县| 鲜城| 光山县| 资溪县| 盐城市| 井研县| 西城区| 东平县| 军事| 安国市| 青浦区| 鄢陵县| 西峡县| 泾阳县| 浪卡子县| 磴口县| 虎林市| 嵊泗县| 青冈县| 高尔夫| 综艺| 金川县| 内黄县| 佛冈县| 嘉祥县| 阿克陶县| 宁津县| 田东县| 高平市| 茶陵县|