【Python 列表(List)】

Python 中的列表(List)是最常用、最靈活的有序數據集合,支持動態增刪改查操作。以下是列表的核心知識點:


一、基礎特性

  1. 有序性:元素按插入順序存儲
  2. 可變性:支持增刪改操作
  3. 允許重復:可存儲重復元素
  4. 異構性:可包含不同類型數據
    my_list = [1, "apple", 3.14, True]
    

二、創建列表

1. 直接定義
fruits = ["apple", "banana", "orange"]
empty_list = []  # 空列表
2. 類型轉換
list("hello")  # → ['h', 'e', 'l', 'l', 'o']
list((1,2,3))  # → [1, 2, 3]
3. 快速初始化
zeros = [0] * 5       # → [0, 0, 0, 0, 0]
matrix = [[0]*3 for _ in range(3)]  # 二維列表

三、常用操作

1. 索引與切片
nums = [10, 20, 30, 40, 50]
nums[0]      # → 10(正向索引,從0開始)
nums[-1]     # → 50(反向索引,從-1開始)
nums[1:4]    # → [20, 30, 40](切片,左閉右開)
nums[::-1]   # → [50, 40, 30, 20, 10](逆序)
2. 增刪改查
# 增
nums.append(60)         # 末尾添加 → [10,20,30,40,50,60]
nums.insert(2, 25)      # 指定位置插入 → [10,20,25,30,40,50]# 刪
nums.pop()              # 刪除末尾元素 → 返回60
nums.remove(30)         # 刪除第一個匹配項 → 刪除30
del nums[1:3]           # 刪除索引1-2的元素 → 刪除20,25# 改
nums[0] = 100           # 修改索引0的元素 → [100,40,50]# 查
if 50 in nums:          # 成員檢查 → Trueprint("存在")

四、常用方法

1. 排序與反轉
nums = [3, 1, 4, 1, 5]
nums.sort()              # 原地排序 → [1, 1, 3, 4, 5]
sorted_nums = sorted(nums)  # 返回新列表 → [1,1,3,4,5]
nums.reverse()           # 原地反轉 → [5,4,3,1,1]
2. 統計與查找
nums.count(1)            # 統計出現次數 → 2
nums.index(4)            # 查找首次出現位置 → 2
3. 連接與復制
a = [1,2]
b = [3,4]
a + b       # → [1,2,3,4](生成新列表)
a * 2       # → [1,2,1,2]
a.extend(b) # 原地擴展 → a變為[1,2,3,4]

五、嵌套列表

1. 創建多維列表
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]
2. 訪問元素
matrix[0][1]  # → 2(第一行第二列)
3. 修改元素
matrix[2][0] = 77  # 修改第三行第一列為77

六、高級技巧

1. 列表推導式
squares = [x**2 for x in range(10) if x%2 == 0]
# → [0, 4, 16, 36, 64]
2. 淺拷貝 vs 深拷貝
import copyoriginal = [[1,2], [3,4]]
shallow = original.copy()         # 淺拷貝(共享子列表)
deep = copy.deepcopy(original)    # 深拷貝(完全獨立)
3. 列表與生成器
# 列表(直接存儲所有元素)
list_data = [x for x in range(1000000)]# 生成器(按需生成,節省內存)
gen_data = (x for x in range(1000000))

七、常見應用場景

  1. 數據清洗

    raw_data = [" 42 ", "3.14", "NaN", "7"]
    cleaned = [float(x.strip()) for x in raw_data if x.strip().replace('.','').isdigit()]
    # → [42.0, 3.14, 7.0]
    
  2. 批量處理

    # 批量重命名文件
    files = ["a.txt", "b.txt", "c.txt"]
    new_files = [f"{i}.txt" for i, name in enumerate(files)]
    
  3. 算法實現

    # 快速排序
    def quicksort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr)//2]return quicksort([x for x in arr if x < pivot]) + \[x for x in arr if x == pivot] + \quicksort([x for x in arr if x > pivot])
    

八、性能優化

  1. 尾部操作優先

    • append()/pop() 時間復雜度 O(1)
    • 頭部插入/刪除 O(n)(需移動所有元素)
  2. 避免頻繁拼接

    # 低效方式
    res = []
    for x in big_list:res += [x]  # 每次生成新列表# 高效方式
    res = []
    for x in big_list:res.append(x)  # 原地修改
    
  3. 預分配空間(大數據量時):

    arr = [0] * 1000000  # 預分配百萬元素列表
    

九、常見陷阱

  1. 可變默認參數

    def bad_append(new_item, my_list=[]):  # 危險!默認參數共享my_list.append(new_item)return my_list# 正確做法
    def good_append(new_item, my_list=None):if my_list is None:my_list = []my_list.append(new_item)return my_list
    
  2. 淺拷貝問題

    a = [[1,2], [3,4]]
    b = a.copy()  # 淺拷貝
    b[0][0] = 99  # 修改會影響a
    

通過掌握這些內容,可以高效處理從簡單數據存儲到復雜算法實現的各種場景。實際應用中需根據需求選擇合適的方法,并注意性能優化和內存管理。

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

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

相關文章

Qt 的原理及使用(1)——qt的背景及安裝

1. Qt 背景介紹 1.1 什么是 Qt Qt 是?個 跨平臺的 C 圖形??界?應?程序框架 。它為應?程序開發者提供了建?藝術級圖形 界?所需的所有功能。它是完全?向對象的&#xff0c;很容易擴展。Qt 為開發者提供了?種基于組件的開發模 式&#xff0c;開發者可以通過簡單的拖拽…

多分類問題softmax傳遞函數+交叉熵損失

在多分類問題中&#xff0c;Softmax 函數通常與交叉熵損失函數結合使用。 Softmax 函數 Softmax 函數是一種常用的激活函數&#xff0c;主要用于多分類問題中。它將一個實數向量轉換為概率分布&#xff0c;使得每個元素的值在 0 到 1 之間&#xff0c;且所有元素的和為 1。 …

數智讀書筆記系列032《統一星型模型--一種敏捷靈活的數據倉庫和分析設計方法》

引言 在當今數字化時代,數據倉庫作為企業數據管理的核心基礎設施,承擔著整合、存儲和提供企業數據的關鍵角色。隨著商業環境的快速變化和業務需求的日益復雜,數據倉庫的設計方法也在不斷演進,以適應新的挑戰和要求。 背景與意義 數據倉庫領域長期存在著兩種主流方法論之…

RT-Thread 深入系列 Part 1:RT-Thread 全景總覽

摘要&#xff1a; 本文將從 RTOS 演進、RT-Thread 的版本分支、內核架構、核心特性、社區與生態、以及典型產品應用等多維度&#xff0c;全面呈現 RT-Thread 的全景圖。 關鍵詞&#xff1a;RT-Thread、RTOS、微內核、組件化、軟件包管理、SMP 1. RTOS 演進與 RT-Thread 定位 2…

[docker基礎一]docker簡介

目錄 一 消除恐懼 1) 什么是虛擬化&#xff0c;容器化 2)案例 3)為什么需要虛擬化&#xff0c;容器化 二 虛擬化實現方式 1)應用程序執行環境分層 2)虛擬化常見類別 3)常見虛擬化實現 一&#xff09;主機虛擬化(虛擬機)實現 二&#xff09;容器虛擬化實現 一 消除恐…

PostgreSQL 的 pg_advisory_lock 函數

PostgreSQL 的 pg_advisory_lock 函數 pg_advisory_lock 是 PostgreSQL 提供的一種應用級鎖機制&#xff0c;它不鎖定具體的數據庫對象&#xff08;如表或行&#xff09;&#xff0c;而是通過數字鍵值來協調應用間的并發控制。 鎖的基本概念 PostgreSQL 提供兩種咨詢鎖(advi…

SGLang 實戰介紹 (張量并行 / Qwen3 30B MoE 架構部署)

一、技術背景 隨著大語言模型&#xff08;LLM&#xff09;的飛速發展&#xff0c;如何更高效、更靈活地駕馭這些強大的模型生成我們期望的內容&#xff0c;成為了開發者們面臨的重要課題。傳統的通過拼接字符串、管理復雜的狀態和調用 API 的方式&#xff0c;在處理復雜任務時…

微服務中 本地啟動 springboot 無法找到nacos配置 啟動報錯

1. 此處的環境變量需要匹配nacos中yml配置文件名的后綴 對于粗心的小伙伴在切換【測試】【開發】環境的nacos使用時會因為這里導致項目總是無法啟動成功

Lua從字符串動態構建函數

在 Lua 中&#xff0c;你可以通過 load 或 loadstring&#xff08;Lua 5.1&#xff09;函數從字符串動態構建函數。以下是一個示例&#xff1a; 示例 1&#xff1a;基本動態函數構建 -- 動態構建一個函數 local funcStr "return function(a, b) return a b end"-…

【Python】?Python單元測試框架unittest總結

1. 本期主題&#xff1a;Python單元測試框架unittest詳解 unittest是Python內置的單元測試框架&#xff0c;遵循Java JUnit的"測試驅動開發"&#xff08;TDD&#xff09;理念&#xff0c;通過繼承TestCase類實現測試用例的模塊化組織。本文聚焦于獨立測試腳本的編寫…

【Python 實戰】---- 使用Python批量將 .ncm 格式的音頻文件轉換為 .mp3 格式

1. 前言 .ncm 格式是網易云音樂專屬的加密音頻格式,用于保護版權。這種格式無法直接播放,需要解密后才能轉換為常見的音頻格式。本文將介紹如何使用 Python 批量將 .ncm 格式的音頻文件轉換為 .mp3 格式。 2. 安裝 ncmdump ncmdump 是一個專門用于解密 .ncm 文件的工具。它…

Linux 學習筆記2

Linux 學習筆記2 一、定時任務調度操作流程注意事項 二、磁盤分區與管理添加新硬盤流程磁盤管理命令 三、進程管理進程操作命令服務管理&#xff08;Ubuntu&#xff09; 四、注意事項 一、定時任務調度 操作流程 創建腳本 vim /path/to/script.sh # 編寫腳本內容設置可執行權…

YOLO目標檢測算法

文章目錄 前言一、目標檢測算法簡介1、傳統目標檢測算法&#xff08;1&#xff09;R-CNN算法簡介&#xff08;2&#xff09;Fast R-CNN算法簡介&#xff08;3&#xff09;Faster R-CNN算法簡介 2、目標檢測中的算法設計范式&#xff08;1&#xff09;one-stage&#xff08;2&am…

【軟件設計師:軟件】20.軟件設計概述

一、軟件設計基本原則 一、軟件設計基本原則 1. 模塊 是指執行某一特定任務的數據結構和程序代碼。 將模塊的接口和功能定義為其外部特性將模塊的局部數據和實現該模塊的程序代碼稱為內部特性。在模塊設計時,最重要的原則就是實現信息隱蔽和模塊獨立。 2 . 信息隱蔽 將每…

軟件工程之面向對象分析深度解析

前文基礎&#xff1a; 1.軟件工程學概述&#xff1a;軟件工程學概述-CSDN博客 2.軟件過程深度解析&#xff1a;軟件過程深度解析-CSDN博客 3.軟件工程之需求分析涉及的圖與工具&#xff1a;軟件工程之需求分析涉及的圖與工具-CSDN博客 4.軟件工程之形式化說明技術深度解…

需求分析階段測試工程師主要做哪些事情

在軟件測試需求分析階段&#xff0c;主要圍繞確定測試范圍、明確測試目標、細化測試內容等方面開展工作&#xff0c;為后續測試計劃的制定、測試用例的設計以及測試執行提供清晰、準確的依據。以下是該階段具體要做的事情&#xff1a; 1. 需求收集與整理 收集需求文檔&#x…

vLLM部署Qwen2-7B模型推理

vllm簡介 vLLM是一個高效的大語言模型推理和部署服務系統&#xff0c;專為大型語言模型的高效執行而設計。它不僅支持多種量化技術以減少模型大小和加速推理過程&#xff0c;還提供了與OpenAI API兼容的服務接口&#xff0c;使得現有的應用程序能夠無縫對接。 一、前提環境 …

【STM32 學習筆記】GPIO輸入與輸出

GPIO詳解 一、GPIO基本概念 GPIO&#xff08;通用輸入輸出&#xff09;是微控制器與外部設備交互的核心接口&#xff0c;具有以下特性&#xff1a; 可編程控制輸入/輸出模式支持數字信號的讀取與輸出集成多種保護機制復用功能支持片上外設連接 二、GPIO位結構解析 2.1 保護二…

安科瑞光伏綜自系統在新能源電站中的應用及調度上傳方案研究

摘要 隨著全球對清潔能源需求的不斷增長&#xff0c;光伏發電作為一種可持續的能源解決方案&#xff0c;正迅速發展。光伏綜合自動化系統&#xff08;綜自系統&#xff09;在確保光伏電站高效、穩定運行方面起著關鍵作用。本文詳細介紹了安科瑞光伏綜自系統&#xff0c;包括其背…

[python] 函數2-匿名函數

一 匿名函數 格式: 函數名 lambda 形參 : 返回值(表達式) 調用: 結果 函數名(實參) 一般只有一行代碼,他是對def定義函數的一種簡化,只能實現簡單的邏輯 邏輯復雜時不要使用lambda add lambda a,b: ab # a,b就是形參 print(add(2,5)) 1.1 無參數 noargs_func lambda…