Python列表全面解析:從基礎到高階操作

一、為什么需要列表?

在Python中,列表是可變有序序列,用于存儲多個元素的容器。相較于單一變量存儲獨立值,列表能更高效地管理批量數據,其特點包括:

  • ?引用存儲:列表元素存儲的是對象的引用
  • ?異構性:支持不同數據類型共存
  • ?動態性:長度和內容可動態修改
a = 10  # 單一變量存儲
lst = ['hello', 98, 98.3]  # 列表存儲多類型數據
print(id(lst))  # 查看列表內存地址

二、列表的創建方式

  1. ?字面量創建
    lst = [元素1, 元素2, ...]

  2. ?構造函數創建
    lst = list(iterable)

lst1 = ['Python', 'Java']          # 直接創建
lst2 = list(('C++', 2024))         # 元組轉列表
lst3 = list('Hello')               # 字符串轉列表 → ['H','e','l','l','o']

三、核心特性解析

1. 索引與切片

  • ?正向索引:從0開始遞增
  • ?逆向索引:從-1開始遞減
  • ?切片操作list[start:stop:step](左閉右開)
lst = [10, 20, 30, 40, 50]
print(lst[1])     # 20(正向索引)
print(lst[-2])    # 40(逆向索引)
print(lst[1:4])   # [20,30,40](基礎切片)
print(lst[::-1])  # [50,40,30,20,10](逆序切片)

2. 元素的增刪改查

添加元素
方法描述時間復雜度
append(x)末尾追加元素O(1)
extend(iter)擴展多個元素O(k)
insert(i,x)指定位置插入O(n)
lst = [1, 2]
lst.append([3,4])     # [1,2,[3,4]]
lst.extend(range(3))  # [1,2,0,1,2]
lst.insert(1, 'new')  # [1,'new',2,0,1,2]
刪除元素
方法描述注意點
remove(x)刪除首個匹配值元素不存在時報錯
pop([i])刪除指定索引元素默認刪除末尾元素
clear()清空列表保留空列表對象
nums = [10, 20, 30, 20]
nums.remove(20)      # [10,30,20]
nums.pop(1)          # [10,20]
nums[1:] = []        # [10](切片刪除)
del nums[0]          # []
修改與查詢
lst = ['A', 'B', 'C']
lst[1] = 'X'              # 直接賦值修改
print(lst.index('C'))     # 2(查詢索引)
print('B' in lst)         # False(存在性檢查)

3. 排序與反轉

  • ?原地排序sort()?方法直接修改原列表
  • ?生成新列表sorted()?函數返回新對象
  • ?逆序操作reverse()?或?[::-1]?切片
data = [3, 1, 4, 2]
data.sort(reverse=True)   # [4,3,2,1]
new_data = sorted(data)   # [1,2,3,4](原列表不變)
data.reverse()            # [1,2,3,4] → [4,3,2,1]

四、高階操作技巧

1. 列表生成式

快速生成列表的簡潔語法:

squares = [x**2 for x in range(5)]          # [0,1,4,9,16]
even_nums = [n for n in nums if n%2 == 0]   # 過濾偶數

2. 嵌套列表處理

處理多維數據結構:

matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]
print(matrix[1][2])       # 6(訪問第二行第三列)

3. 列表去重方法

  • ?集合轉換法list(set(lst))(無序)
  • ?順序保留法:遍歷判斷添加
# 保留原始順序
def deduplicate(lst):seen = []for item in lst:if item not in seen:seen.append(item)return seen

五、性能與應用場景

  1. ?時間復雜度分析

    • 索引/賦值:O(1)
    • 插入/刪除:平均O(n)
    • 搜索元素:O(n)
  2. ?適用場景

    • 動態數據集合
    • 需要頻繁修改的序列
    • 非數值型數據存儲(如字符串、對象混合存儲)

六、總結

Python列表作為核心數據結構,具備以下核心優勢:

  • ?靈活的元素管理:支持增刪改查全套操作
  • ?豐富的內置方法:提供排序、反轉等便捷功能
  • ?高效的數據處理:結合生成式實現快速操作

掌握列表的底層原理和高級用法,將顯著提升Python編程效率。建議在實際開發中根據需求選擇合適的方法,平衡功能實現與性能優化。


最新技術動態請關注作者:Python×CATIA工業智造??
版權聲明:轉載請保留原文鏈接及作者信息

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78907.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78907.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78907.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring知識點梳理

一、Spring(Spring Framework) 1、IOC(控制反轉) 1)什么是IOC控制反轉? 為了解藕,有反轉就有“正轉”,“正轉”就是程序員手動 new對象;“反轉”就是將對象的創建、對…

SpringBoot啟動后自動執行方法的各種方式-筆記

1. SpringBoot啟動后自動執行方法的各種方式 1.1 PostConstruct 注解 作用:在依賴注入完成后執行初始化方法。 適用場景:需要在Bean初始化時執行某些操作(如配置、預加載數據)。 注意:該方法在Bean初始化階段執行&…

基礎知識-java流steam

Java Stream 流詳解 一、Stream 概述 #mermaid-svg-ZXmu5UZgAcGGq8EN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZXmu5UZgAcGGq8EN .error-icon{fill:#552222;}#mermaid-svg-ZXmu5UZgAcGGq8EN .error-text{fil…

8.Android(通過Manifest配置文件傳遞數據(meta-data))

配置文件 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><applicationandroid:allowBackup"tr…

java 解析入參里的cron表達式,修改周時間

文章目錄 前言一、java 解析入參里的cron表達式,修改周時間二、使用步驟1.示例 總結 前言 一、java 解析入參里的cron表達式,修改周時間 示例&#xff1a; 第一種: 0 0 0,16 ? * 0,1 第2種 0 0 0,16 ? * 1-7 第3種 0 0 0,16 ? * ? 第4種 0 0 0,16 ? * * 二、使用步驟 1…

DTO,VO,PO,Entity

1. DTO (Data Transfer Object) 定義 DTO 是數據傳輸對象&#xff0c;用于在不同系統或層之間傳輸數據。 目的 簡化數據傳輸&#xff0c;降低耦合&#xff0c;通常只包含需要傳輸的字段&#xff0c;避免暴露內部實現細節。 使用場景 Controller 和 Service 或 遠程調用 之…

從零搭建高可用分布式限流組件:設計模式與Redis令牌桶實踐

一、需求背景與設計目標 在分布式系統中&#xff0c;面對突發流量時需要一種精準可控的流量控制手段。我們的組件需要具備&#xff1a; 多維度限流&#xff08;用戶/IP/服務節點/自定義表達式&#xff09;分布式環境下精準控制開箱即用的Spring Boot Starter集成高擴展性的架…

Node.js 事件循環和線程池任務完整指南?

在 Node.js 的運行體系中&#xff0c;事件循環和線程池是保障其高效異步處理能力的核心組件。事件循環負責調度各類異步任務的執行順序&#xff0c;而線程池則承擔著處理 CPU 密集型及部分特定 I/O 任務的工作。接下來&#xff0c;我們將結合圖示&#xff0c;詳細剖析兩者的工作…

echarts自定義圖表--儀表盤

基于儀表盤類型的自定義表盤 上圖為3層結構組成 正常一個儀表盤配置要在外圈和內圈之間制造一條縫隙間隔 再創建一個儀表盤配置 背景透明 進度條拉滿 進度條顏色和數據的背景相同開始處的線 又一個儀表盤配置 數值固定一個比較小的值 <!DOCTYPE html> <html><h…

【數據結構】圖論存儲結構深度解析:鄰接多重表如何實現無向圖O(1)刪邊?鄰接矩陣/鏈表/十字鏈對比

鄰接多重表 導讀一、有向圖的存儲結構二、鄰接多重表三、存儲結構四、算法評價4.1 時間復雜度4.2 空間復雜度 五、四種存儲方式的總結5.1 空間復雜度5.2 找相鄰邊5.3 刪除邊或結點5.4 適用于5.5 表示方式 六、圖的基本操作結語 導讀 大家好&#xff0c;很高興又和大家見面啦&a…

【Rust】所有權

目錄 所有權基本概念所有權介紹棧與堆變量作用域 字符串字符串字面值&#xff08;&str&#xff09;String 類型相互轉換所有權 內存結構對比注意事項和常見坑使用場景 內存與分配變量與數據交互的方式&#xff08;一&#xff09;&#xff1a;移動變量與數據交互的方式&…

4月29日日記

終于是考完解析幾何了&#xff0c;今天昨天突擊了一下&#xff0c;感覺確實學會了很多之前不會的東西&#xff0c;但是可能距離高分還差很多。這次考試不太理想。大部分原因是前期沒學&#xff0c;吸取教訓&#xff0c;早點開始復習微積分。明天還有一節微積分&#xff0c;但是…

【深度對比】Google Play與IOS 馬甲包處理差異分析

在移動應用發布與推廣過程中&#xff0c;馬甲包&#xff08;Cloned App / Alternate Version&#xff09; 曾被廣泛用于流量測試、風險隔離、多品牌運營等場景中。隨著 Google Play 與 Apple App Store 審核政策不斷收緊&#xff0c;開發者們越來越關注兩個平臺對“馬甲包”的態…

MCP 架構全解析:Host、Client 與 Server 的協同機制

目錄 &#x1f3d7;? MCP 架構全解析&#xff1a;Host、Client 與 Server 的協同機制 &#x1f4cc; 引言 &#x1f9e9; 核心架構組件 1. Host&#xff08;主機&#xff09; 2. Client&#xff08;客戶端&#xff09; 3. Server&#xff08;服務器&#xff09; &#…

記錄一次無界微前端的簡單使用

記錄一次無界微前端使用 無界微前端主應用子應用nginx配置 無界微前端 https://wujie-micro.github.io/doc/ 因為使用的是vue項目主應用和次應用都是 所以用的封裝的。 https://wujie-micro.github.io/doc/pack/ 主應用 安裝 選擇對應的版本 # vue2 框架 npm i wujie-vue2…

LLM應用于自動駕駛方向相關論文整理(大模型在自動駕駛方向的相關研究)

1、《HILM-D: Towards High-Resolution Understanding in Multimodal Large Language Models for Autonomous Driving》 2023年9月發表的大模型做自動駕駛的論文&#xff0c;來自香港科技大學和人華為諾亞實驗室&#xff08;代碼開源&#xff09;。 論文簡介&#xff1a; 本文…

FTP-網絡文件服務器

部署思路 單純上傳下載ftp系統集成間的共享 samba網絡存儲服務器 NFS 網絡文件服務器&#xff1a;通過網絡共享文件或文件夾&#xff0c;實現數據共享 NAS &#xff08; network append storage):共享的是文件夾 FTP&#xff1a;文件服務器samba&#xff1a;不同系統間的文件…

在 Ubuntu 22.04 x64 系統安裝/卸載 1Panel 面板

一、 1Panel 是什么&#xff1f; 1Panel 是一款基于 Go 語言開發的現代化開源服務器管理面板&#xff08;類似寶塔面板&#xff09;&#xff0c;專注于容器化&#xff08;Docker&#xff09;和云原生環境管理&#xff0c;提供可視化界面簡化服務器運維操作。 1. 1Panel主要功…

Redis | Redis集群模式技術原理介紹

關注&#xff1a;CodingTechWork Redis 集群模式概述 Redis 集群&#xff08;Cluster&#xff09;模式是 Redis 官方提供的分布式解決方案&#xff0c;旨在解決單機 Redis 在數據量和性能上的限制。它通過數據分片、高可用性和自動故障轉移等特性&#xff0c;提供了水平擴展和…

Servlet小結

視頻鏈接&#xff1a;黑馬servlet視頻全套視頻教程&#xff0c;快速入門servlet原理servlet實戰 什么是Servlet&#xff1f; 菜鳥教程&#xff1a;Java Servlet servlet&#xff1a; server applet Servlet是一個運行在Web服務器&#xff08;如Tomcat、Jetty&#xff09;或應用…