python容器之常用操作

以列表list為例,這個list相當于c++中的數組或vector容器。那列表有哪些常用的操作呢?

獲取列表的長度

list = [1,2,3,4,5]
//獲取列表的長度
length = len(list)

注意這里與c++不同,c++中的容器都是有各自的定義,每種容器類型都實現了自己的獲取本容器的長度的方法,這些方法名字一般都是為size(),但是python不一樣,對于python中常用的容器他們一般都是利用python提供的內置函數len來獲取列表長度的。python中容器一般不是通過size等方法獲取容器其元素的個數。(如果是用戶自己實現的類,不在討論的范圍之內)

獲取列表中某個元素出現的次數

list = [1,2,2,3,4,5]
#統計列表中2出現的次數
number = list.count(2)  

這里獲取容器內某個元素出現的次數是通過count方法獲取的。count方法是有參數的,參數為元素值。

列表中添加元素

  • 在列表末尾添加一個元素:使用append方法。
  • 兩個列表拼接成一個列表:直接相加即可
  • 在列表1中添加一個元素,但是元素是列表2:如果想要將列表2整天加入列表1,使用append方法即可;如果想要將列表2中的內容加入到列表1,而不是將整個列表2作為一個整體加入到列表1,使用extend方法。exntend會把列表打散,將列表中的元素一個一個的加入到列表1匯中;append方法則會將列表2作為一個整體加入到列表1中。
  • 在列表的插入中插入元素的方法:使用insert方法,insert方法要指定索引值和插入值;如果要頻繁的在頭部插入列表,請使用deque(頻繁的在頭部插入推薦使用deque)。具體使用方法請看下面的示例。

示例如下:

list = [1,2,3,4,5]#向列表中添加一個元素,添加到末尾
list.append(6)
print(f'list = {list}')  #輸出[1,2,3,4,5,6]#兩個列表相加
list1 = [6,7,8]
list = list + list1;
print(f'list = {list}')  #輸出[1,2,3,4,5,6,7,8]#列表1中使用append方法添加list1
list1 = [6,7,8]
list.append(list1)
print(f'list = {list}')  #輸出[1,2,3,4,5,[6,7,8]]#列表1使用extend方法添加list1
list1 = [6,7,8]
list.extend(list1)
print(f'list = {list}')  #輸出[1,2,3,4,5,6,7,8]
from collections import deque# 創建deque對象
numbers = deque([1, 2, 3])# 使用appendleft添加元素
numbers.appendleft(0)
print(list(numbers))  # 輸出: [0, 1, 2, 3]# 使用extendleft添加多個元素(注意順序會反轉)
numbers.extendleft([-2, -1])
print(list(numbers))  # 輸出: [-1, -2, 0, 1, 2, 3]

刪除列表中某個位置的元素

刪除列表中的某個元素,有幾種情況:

  • 知道具體的值,按值進行刪除:使用remove方法
  • 知道要刪除的索引位置,按位置進行刪除:del
  • 知道要刪除的索引位置,不但要刪除這個值,還要返回要刪除的值:pop方法(最常用的方法之一)
  • 刪除列表中所有與某個元素相等的值:使用列表推導式和條件表達式批量刪除

請看下面的示例:

#pop方法刪除元素,如果沒有參數,默認刪除最后一個元素
#如果有參數,則該參數代表要刪除的索引值
list = [1,2,3,4,5]
item = list.pop()
print(f'item={item}')  #item=5
print(f'list={list}')  #list=[1, 2, 3, 4]
second_item = list.pop(1)  #刪除列表中索引值為1的元素
print(f'second_item={second_item}')  #item=2
print(f'list={list}')  #list=[1, 3, 4]#remove方法按值刪除
list = [1,2,3,4,5]
list.remove(1)
print(f'list={list}')  #list=[2, 3, 4, 5]#安全刪除
def safe_remove(list, item):try:list.remove(item)return Trueexcept ValueError:print(f"列表中不存在元素 {item}")return False#按索引位置刪除
list = [1,2,3,4,5]
del list[3]
print(f'list={list}')  #list=[1, 2, 3, 5]#批量式刪除
list = [1,2,2,2,2,2,3,4,5]
list = [value for value in list if value!=2]  #列表推導式
print(f'list={list}')  #list=list=[1, 3, 4, 5]

獲取列表的一部分數據

在python中如果要對指向獲取列表的一部分數據,python提供了一種新的形式,即索引和切片,通過這樣的方式來獲取指定區域的數據。索引值與c++中的一樣都是從0開始的,切片需要注意的是左閉右開原則,即包含切片左側的索引,但是不包括索引右側的索引。注意切片是可以包含步長的。索引的形式如下:

list左索引值:右索引值]------>左閉右開,即這個切片包括左索引對應的值,但是不包括右索引值

list[:]----->這種表示列表中的所有值

list[:索引值]-------->取這個索引值之前的所有的元素組成的列表

list[索引值:]--------->取從這個元素開始到列表末尾的所有元素

list[索引值:索引值:步長]-------->從左索引值開始到右索引值的前一個元素,每隔步長取元素

list = [1,2,3,4,5,6]
#通過切片的方式獲取列表的部分 輸出為[2,3,4,5,6]
print(f'list[1:]={list[1:]}') #通過切片的方式獲取列表的部分 輸出為[2,3]
print(f'list[1:]={list[1:3]}') #通過切片的方式獲取列表的部分 輸出為[1,2,3]
print(f'list[1:]={list[:3]}')#通過切片的方式獲取列表的部分 輸出為[1,2,3,4,5,6]
print(f'list[1:]={list[:]}')#通過切片的方式獲取列表的部分 輸出為[1,3,5]
print(f'list[1:]={list[::2]}')

注意事項

  1. 列表中的元素數據元素可以不相同

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

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

相關文章

工程化與框架系列(11)--Serverless實踐

Serverless實踐 ?? Serverless(無服務器)架構是云計算的一種新范式,它讓開發者專注于業務邏輯而無需關心服務器運維。本文將詳細介紹前端開發中的Serverless實踐方案。 Serverless概述 🌟 💡 小知識:Se…

kan與小波,和不知所云的畫圖

文章目錄 小波應用范圍與pde小波的名字 畫圖圖(a):數值解向量 \( u \)圖(b):數值解向量 \( v \)結論圖4 小波 在你提供的代碼中,小波變換(Wavelet Transform)被用于 KANLinear 類中。具體來說,小波變換在 …

算法-二叉樹篇22-二叉搜索樹的最近公共祖先

二叉搜索樹的最近公共祖先 力扣題目鏈接 題目描述 給定一個二叉搜索樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個結點 p、q,最近公共祖先表示為一個結點 x,滿足 x 是 p、q 的祖先且…

細說STM32F407單片機RS485收發通信實例及調試方法

目錄 一、硬件配置 1、RCC、DEBUG、CodeGenerator 2、USART3 3、 RS485_DIR 4、NVIC 二、軟件設計 1、RS485的收發控制 2、main.c 三、運行調試 1、修改RS485_DIR為SET后需要延遲 2、向串口助手發送的數據不能太長 MCU上的串口UART(USART)是…

PDF工具 Candy Desktop(安卓)

PDF Candy Desktop(安卓) 今天給大家分享一個電腦端的PDF工具,里面的功能很多,主要涉及PDF編輯、轉換等,不僅超級好用,而且免費!剩下就不說了,兄弟們自行下載體驗吧! 「…

基于javaweb的SSM+Maven幼兒園管理系統設計和實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

golang安裝(1.23.6)

1.切換到安裝目錄 cd /usr/local 2.下載安裝包 wget https://go.dev/dl/go1.23.6.linux-amd64.tar.gz 3.解壓安裝包 sudo tar -C /usr/local -xzf go1.23.6.linux-amd64.tar.gz 4.配置環境變量 vi /etc/profile export PATH$…

【新手入門】SQL注入之盲注

一、引言 在我們的注入語句被帶入數據庫查詢但卻什么都沒有返回的情況我們該怎么辦? 例如應用程序返回到一個"通用的"的頁面,或者重定向一個通用頁面(可能為網站首頁)。這時,我們之前學習的SQL注入的辦法就無法使用了。這種情況我們稱之為無…

2024年12月中國電子學會青少年軟件編程(Python)等級考試試卷(六級)答案 + 解析

青少年軟件編程(Python)等級考試試卷(六級) ↓↓↓↓↓↓ 真題模擬測試 分數:100 題數:38 一、單選題(共25題,共50分) 下面代碼的輸出結果正確的是?( )import json json_str =’ [ “Alice”, “girl", 17,“New York”]’ data = json.loads(json_str) prin…

wordpress按不同頁調用不同的標題3種形式

在WordPress中,可以通過多種方式根據不同的頁面調用不同的標題。這通常用于實現SEO優化、自定義頁面標題或根據頁面類型顯示不同的標題內容。 使用wp_title函數 wp_title函數用于在HTML的title標簽中輸出頁面標題。你可以通過修改主題的header.php文件來實現自定義…

DeepSeek-R1 大模型實戰:騰訊云 HAI 平臺 3 分鐘極速部署指南

引言:為什么選擇 DeepSeek-R1? 近期,國產大模型 DeepSeek-R1 因其低成本、高性能的特點在全球 AI 領域引發熱議。根據 Sensor Tower 數據,其發布僅 18 天便斬獲 1600 萬次下載量,遠超 ChatGPT 同期表現。而騰訊云推出…

【Pytest】setup和teardown的四個級別

文章目錄 1.setup和teardown簡介2.模塊級別的 setup 和 teardown3.函數級別的 setup 和 teardown4.方法級別的 setup 和 teardown5.類級別的 setup 和 teardown 1.setup和teardown簡介 在 pytest 中,setup 和 teardown 用于在測試用例執行前后執行一些準備和清理操…

使用Docker將ros1自定義消息通過rosjava_bootstrap生成jar包

文章目錄 預準備環境rosjava_bootstrap壞消息好消息 環境安裝docker安裝rosjava_bootstrap倉庫rosjava_center倉庫修改rosjava_bootstrap代碼拉取docker鏡像放置自己的自定義消息 啟動docker編譯 預準備環境 rosjava_bootstrap rosjava_bootstrap是將自定義的ROS消息生成java…

《Python實戰進階》No 7: 一個AI大模型聊天室的構建-基于WebSocket 實時通信開發實戰

第7集: 一個AI大模型聊天室的構建-基于WebSocket 實時通信開發實戰 在現代 Web 開發中,實時通信已經成為許多應用的核心需求。無論是聊天應用、股票行情推送,還是多人協作工具,WebSocket 都是實現高效實時通信的最佳選擇之一。本…

輪式機器人在復雜地形中如何選擇合適的全局路徑規劃算法?

已思考完成 收起 嗯,用戶問的是輪式機器人在復雜地形中如何選擇合適的全局路徑規劃算法。首先,我需要理解復雜地形可能帶來的挑戰,比如崎嶇的路面、動態障礙物、非結構化環境等等。輪式機器人在這里的運動控制需要考慮地形通過性、穩定性&…

Mysql100道高頻面試題

一、基礎概念 1. 什么是數據庫?DBMS的作用是什么? 數據庫:是按照數據結構來組織、存儲和管理數據的倉庫。它允許用戶高效地訪問和管理數據。 DBMS(數據庫管理系統):是一種軟件系統,用于創建和…

React底層原理詳解

React中Element&Fiber對象、WorkInProgress雙緩存、Reconcile&Render&Commit、第一次掛載過程詳解 在面試中介紹React底層原理時,需遵循邏輯清晰、層次分明、重點突出的原則,結合技術深度與實際應用場景。以下是結構化回答模板:…

qt5的中文亂碼問題,QString、QStringLiteral 為 UTF-16 編碼

qt5的中文亂碼問題一直沒有很明確的處理方案。 今天處理進程間通信時,也遇到了qt5亂碼問題,一邊是設置的GBK,一邊設置的是UTF8,單向通信約定采用UTF8。 發送端保證發的是UTF8字符串,因為UTF8在網絡數據包中沒有字節序…

解鎖瀏覽器內置API,助力跨標簽/跨頁面數據通信

1 BrodcastChanner 概念 BroadcastChannel接口表示給定源的任何瀏覽上下文都可以訂閱的命名頻道。它允許同源的不同瀏覽器窗口、標簽頁、frame 或者 iframe 下的不同文檔之間相互通信。消息通過message事件進行廣播,該事件在偵聽該頻道的所有BroadcastChannel對象上…

Mysql-如何理解事務?

一、事務是什么東西 有些場景中,某個操作需要多個sql配合完成: 例如: 李四這個月剩下的前不夠交房租了,找張三借1000元急用: (1)給張三的賬戶余額 減去1000元 updata 賬戶表 set money money -…