Python:核心知識點整理大全5-筆記

目錄

2. 使用方法pop()刪除元素

3. 彈出列表中任何位置處的元素

4. 根據值刪除元素

3 章 列表簡介

3.3 組織列表

3.3.1 使用方法 sort()對列表進行永久性排序

3.3.2 使用函數 sorted()對列表進行臨時排序

3.3.3 倒著打印列表

3.3.4 確定列表的長度

3.5 小結


2. 使用方法pop()刪除元素

有時候,你要將元素從列表中刪除,并接著使用它的值。例如,你可能需要獲取剛被射殺的 外星人的x和y坐標,以便在相應的位置顯示爆炸效果;在Web應用程序中,你可能要將用戶從活 躍成員列表中刪除,并將其加入到非活躍成員列表中。

方法pop()可刪除列表末尾的元素,并讓你能夠接著使用它。術語彈出(pop)源自這樣的類 比:列表就像一個棧,而刪除列表末尾的元素相當于彈出棧頂元素。 下面從列表motorcycles中彈出一款摩托車:

1 motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
2 popped_motorcycle = motorcycles.pop()
3 print(motorcycles)
4 print(popped_motorcycle)

我們首先定義并打印了列表motorcycles(見1)。接下來,我們從這個列表中彈出一個值, 并將其存儲到變量popped_motorcycle中(見2)。然后我們打印這個列表,以核實從其中刪除了 一個值(見3)。最后,我們打印彈出的值,以證明我們依然能夠訪問被刪除的值(見4)。 輸出表明,列表末尾的值'suzuki'已刪除,它現在存儲在變量popped_motorcycle中:

['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki 

方法pop()是怎么起作用的呢?假設列表中的摩托車是按購買時間存儲的,就可使用方法 pop()打印一條消息,指出最后購買的是哪款摩托車:

motorcycles = ['honda', 'yamaha', 'suzuki']
last_owned = motorcycles.pop()
print("The last motorcycle I owned was a " + last_owned.title() + ".")

輸出是一個簡單的句子,指出了最新購買的是哪款摩托車:

The last motorcycle I owned was a Suzuki

3. 彈出列表中任何位置處的元素

實際上,你可以使用pop()來刪除列表中任何位置的元素,只需在括號中指定要刪除的元素 的索引即可。

motorcycles = ['honda', 'yamaha', 'suzuki']
1 first_owned = motorcycles.pop(0)
2 print('The first motorcycle I owned was a ' + first_owned.title() + '.')

首先,我們彈出了列表中的第一款摩托車(見1),然后打印了一條有關這輛摩托車的消息 (見2)。輸出是一個簡單的句子,描述了我購買的第一輛摩托車:

The first motorcycle I owned was a Honda. 

別忘了,每當你使用pop()時,被彈出的元素就不再在列表中了。

如果你不確定該使用del語句還是pop()方法,下面是一個簡單的判斷標準:如果你要從列表 中刪除一個元素,且不再以任何方式使用它,就使用del語句;如果你要在刪除元素后還能繼續 使用它,就使用方法pop()。

4. 根據值刪除元素

有時候,你不知道要從列表中刪除的值所處的位

置。如果你只知道要刪除的元素的值,可使 用方法remove()。

例如,假設我們要從列表motorcycles中刪除值'ducati'。

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
1 motorcycles.remove('ducati')
print(motorcycles)

1 處的代碼讓Python確定'ducati'出現在列表的什么地方,并將該元素刪除:

['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki'] 

使用remove()從列表中刪除元素時,也可接著使用它的值。下面刪除值'ducati',并打印一 條消息,指出要將其從列表中刪除的原因:

3 章 列表簡介

1 motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
2 too_expensive = 'ducati'
3 motorcycles.remove(too_expensive)
print(motorcycles)
4 print("\nA " + too_expensive.title() + " is too expensive for me.") 

在1處定義列表后,我們將值'ducati'存儲在變量too_expensive中(見2)。接下來,我們 使用這個變量來告訴Python將哪個值從列表中刪除(見3)。最后,值'ducati'已經從列表中刪除, 但它還存儲在變量too_expensive中(見4),讓我們能夠打印一條消息,指出將'ducati'從列表 motorcycles中刪除的原因:

['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
A Ducati is too expensive for me. 

注意 方法remove()只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要 使用循環來判斷是否刪除了所有這樣的值。你將在第7章學習如何這樣做。


3.3 組織列表

在你創建的列表中,元素的排列順序常常是無法預測的,因為你并非總能控制用戶提供數據 的順序。這雖然在大多數情況下都是不可避免的,但你經常需要以特定的順序呈現信息。有時候, 你希望保留列表元素最初的排列順序,而有時候又需要調整排列順序。Python提供了很多組織列 表的方式,可根據具體情況選用。

3.3.1 使用方法 sort()對列表進行永久性排序

Python方法sort()讓你能夠較為輕松地對列表進行排序。假設你有一個汽車列表,并要讓其 中的汽車按字母順序排列。為簡化這項任務,我們假設該列表中的所有值都是小寫的。

cars.py

cars = ['bmw', 'audi', 'toyota', 'subaru']
1 cars.sort()
print(cars)

方法sort()(見1)永久性地修改了列表元素的排列順序。現在,汽車是按字母順序排列的, 再也無法恢復到原來的排列順序:

['audi', 'bmw', 'subaru', 'toyota']

你還可以按與字母順序相反的順序排列列表元素,為此,只需向sort()方法傳遞參數 reverse=True。下面的示例將汽車列表按與字母順序相反的順序排列:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars) 

同樣,對列表元素排列順序的修改是永久性的:

['toyota', 'subaru', 'bmw', 'audi']

3.3.2 使用函數 sorted()對列表進行臨時排序

要保留列表元素原來的排列順序,同時以特定的順序呈現它們,可使用函數sorted()。函數 sorted()讓你能夠按特定順序顯示列表元素,同時不影響它們在列表中的原始排列順序。

下面嘗試對汽車列表調用這個函數。

cars = ['bmw', 'audi', 'toyota', 'subaru']
1 print("Here is the original list:")
print(cars)
2 print("\nHere is the sorted list:")
print(sorted(cars))
3 print("\nHere is the original list again:")
print(cars) 

我們首先按原始順序打印列表(見1),再按字母順序顯示該列表(見2)。以特定順序顯示 列表后,我們進行核實,確認列表元素的排列順序與以前相同(見3)

Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
4 Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']

注意,調用函數sorted()后,列表元素的排列順序并沒有變(見4)。如果你要按與字母順 序相反的順序顯示列表,也可向函數sorted()傳遞參數reverse=True。


注意 在并非所有的值都是小寫時,按字母順序排列列表要復雜些。決定排列順序時,有多種 解讀大寫字母的方式,要指定準確的排列順序,可能比我們這里所做的要復雜。然而, 大多數排序方式都基于本節介紹的知識。


3.3.3 倒著打印列表

要反轉列表元素的排列順序,可使用方法reverse()。假設汽車列表是按購買時間排列的, 可輕松地按相反的順序排列其中的汽車:

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars) 

注意,reverse()不是指按與字母順序相反的順序排列列表元素,而只是反轉列表元素的排 列順序:

['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']

方法reverse()永久性地修改列表元素的排列順序,但可隨時恢復到原來的排列順序,為此 只需對列表再次調用reverse()即可。

3.3.4 確定列表的長度

使用函數len()可快速獲悉列表的長度。在下面的示例中,列表包含4個元素,因此其長度為4:

>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4 

在你需要完成如下任務時,len()很有用:確定還有多少個外星人未被射殺,需要管理多少 項可視化數據,網站有多少注冊用戶等。


注意 Python計算列表元素數時從1開始,因此確定列表長度時,你應該不會遇到差一錯誤。


3.4 使用列表時避免索引錯誤 剛開始使用列表時,經常會遇到一種錯誤。假設你有一個包含三個元素的列表,卻要求獲取 第四個元素:

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[3])

這將導致索引錯誤

Traceback (most recent call last):File "motorcycles.py", line 3, in <module>print(motorcycles[3])
IndexError: list index out of range 

Python試圖向你提供位于索引3處的元素,但它搜索列表motorcycles時,卻發現索引3處沒有 元素。鑒于列表索引差一的特征,這種錯誤很常見。有些人從1開始數,因此以為第三個元素的 索引為3;但在Python中,第三個元素的索引為2,因為索引是從0開始的。

索引錯誤意味著Python無法理解你指定的索引。程序發生索引錯誤時,請嘗試將你指定的索 引減1,然后再次運行程序,看看結果是否正確。

別忘了,每當需要訪問最后一個列表元素時,都可使用索引-1。這在任何情況下都行之有效, 即便你最后一次訪問列表后,其長度發生了變化:

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[-1])

索引-1總是返回最后一個列表元素,這里為值'suzuki':

'suzuki' 

僅當列表為空時,這種訪問最后一個元素的方式才會導致錯誤:

motorcycles = []
print(motorcycles[-1])

列表motorcycles不包含任何元素,因此Python返回一條索引錯誤消息:

Traceback (most recent call last):File "motorcyles.py", line 3, in <module>print(motorcycles[-1])
IndexError: list index out of range

注意 發生索引錯誤卻找不到解決辦法時,請嘗試將列表或其長度打印出來。列表可能與你以 為的截然不同,在程序對其進行了動態處理時尤其如此。通過查看列表或其包含的元素 數,可幫助你找出這種邏輯錯誤。


3.5 小結

在本章中,你學習了:列表是什么以及如何使用其中的元素;如何定義列表以及如何增刪元 素;如何對列表進行永久性排序,以及如何為展示列表而進行臨時排序;如何確定列表的長度, 以及在使用列表時如何避免索引錯誤。 在第4章,你將學習如何以更高效的方式處理列表元素。通過使用為數不多的幾行代碼來遍 歷列表元素,你就能高效地處理它們,即便列表包含數千乃至數百萬個元素。


Python:核心知識點整理大全3-筆記-CSDN博客

Python:核心知識點整理大全2-筆記-CSDN博客

Python:核心知識點整理大全1-筆記-CSDN博客

往期快速傳送門👆(在文章最后):

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

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

相關文章

軟件測試:測試用例八大要素模板

一、通用測試用例八要素 1、用例編號&#xff1b; 2、測試項目&#xff1b; 3、測試標題&#xff1b; 4、重要級別&#xff1b; 5、預置條件&#xff1b; 6、測試輸入&#xff1b; 7、操作步驟&#xff1b; 8、預期輸出 二、具體分析通用測試用例八要素 1、用例編號 一般是數字…

[NAND Flash 2.1] NAND Flash 閃存改變了現代生活

依公知及經驗整理&#xff0c;原創保護&#xff0c;禁止轉載。 專欄 《深入理解NAND Flash》 <<<< 返回總目錄 <<<< ? 1989年NAND閃存面世了&#xff0c;它曾經且正在改變了我們的日常生活。 NAND 閃存發明之所以偉大&#xff0c;是因為&#xff0c…

一個CV算法工程師在技術方面的小反思

極市導讀 正如作者所說,做一個算法工程師最重要的素質是在海量的算法方案中理解,吃透那些真正的干貨,然后不斷在實踐中去驗證,并總結吸收到自己的腦子里。本文記錄了作者在算法工程師這個崗位上一年后總結的一些關于技術上的經驗總結。>>加入極市CV技術交流群,走在計…

怎樣解決編譯后的exe文件運行時產生的錯誤?

編譯后的exe文件運行時&#xff0c;錯誤如下錯誤提示&#xff1a;Traceback (most recent call last):File "pd.py", line 1, in <module>from pdf2docx import parse ModuleNotFoundError: No module named pdf2docx 怎樣解決&#xff1f; 這個錯誤提示表明…

java數據結構面試題

1.棧和隊列的共同特點是&#xff08;只允許在端點處插入和刪除元素&#xff09; 4.棧通常采用的兩種存儲結構是&#xff08;線性存儲結構和鏈表存儲結構&#xff09; 5.下列關于棧的敘述正確的是&#xff08;D&#xff09; A.棧是非線性結構 B.棧是一種樹狀結構 C.棧具有先進先…

蘋果OS X系統介紹(Mac OS --> Mac OS X --> OS X --> macOS)

文章目錄 OS X系統介紹歷史與版本架構內核與低級系統圖形&#xff0c;媒體和用戶界面應用程序和服務 特性用戶友好強大的命令行安全性集成與互操作性 總結 OS X系統介紹 OS X是由蘋果公司為Macintosh計算機系列設計的基于UNIX的操作系統。其界面友好&#xff0c;易于使用&…

使用 nohup java - jar 不輸出日志

要在使用nohup java -jar命令時不輸出日志&#xff0c;可以將標準輸出和標準錯誤輸出重定向到特殊設備文件/dev/null。這樣做將會丟棄所有的輸出。 以下是在Linux中使用nohup java -jar命令并禁止輸出日志的示例&#xff1a; 復制代碼 nohup java -jar your-application.jar …

Python可視化(二)——Seaborn

Seaborn是一個基于matplotlib的可視化庫&#xff0c;其為用戶提供了高級接口&#xff0c;并且該工具還深度集成了pandas的數據結構。并且該工具該集成了很多數據庫&#xff0c;配合官網給出的代碼示例&#xff0c;可以更方便的進行操作。 官網對它的介紹為&#xff1a; Seabo…

Servlet學習筆記

簡介 瀏覽器請求處理流程&#xff1a;瀏覽器發請求 > 服務器tomcat( > 應用程序 ( > servlet) ) Servlet應用的三大作用域&#xff1a;request&#xff0c;session&#xff0c;application tomcat存放項目的層級結構 注釋&#xff1a;servlet原引用包名 javax.serv…

卡爾曼濾波器

歡迎訪問我的博客首頁。 卡爾曼濾波器 1. 參考 1. 參考 卡爾曼濾波器&#xff0c;B 站&#xff0c;2020。擴展卡爾曼濾波器&#xff0c;CSDN&#xff0c;2023。

Git的安裝以及SSH配置

前言 近期工作需要&#xff0c;所以版本管理工具要用到Git&#xff0c;某些操作需要ssh進行操作&#xff0c;在某次操作中遇到&#xff1a;git bash報錯&#xff1a;Permission denied, please try again。經排查是ssh沒有配置我的key&#xff0c;所以就借著這篇文章整理了一下…

WorkPlus即時通訊,讓溝通零障礙!企業協作更高效

如今&#xff0c;隨著信息技術的快速發展&#xff0c;企業對于高效溝通和即時協作的需求也日益增長。在這個數字化時代&#xff0c;WorkPlus作為一款領先的企業級移動辦公平臺&#xff0c;以其強大的即時通訊功能和卓越的用戶體驗&#xff0c;成功為企業打造了高效溝通的新時代…

input = torch.randn(20, 2, 11, 11, 32)輸出形式

input torch.randn(20, 2, 11, 11, 32) m torch.nn.AdaptiveAvgPool3d((1,1, 32)) xm(input) print(x.shape) 結果&#xff1a; 也就是不用管批次和通道數

pico示波器使用

文章目錄 Pico示波器保存波形Pico示波器錄制數據Pico示波器解析CAN報文Pico示波器保存波形 Pico示波器可以通過以下步驟保存波形: 在示波器上選擇要保存的波形。連接示波器到計算機上,可以使用USB或者Ethernet連接。打開PicoScope軟件,選擇“File”菜單,然后選擇“Save As…

Python開發運維:Python垃圾回收機制

目錄 一、理論 1.Python垃圾回收機制 一、理論 1.Python垃圾回收機制 &#xff08;1&#xff09;引?計數器 1&#xff09;環狀雙向鏈表 refchain 在python程序中創建的任何對象都會放在refchain鏈表中。 name "david" age 20 hobby ["籃球",游泳…

放蘋果 .

把m個同樣的蘋果放在n個同樣的盤子里&#xff0c;允許有的盤子空著不放&#xff0c;問共有多少種不同的分法&#xff1f; 注意&#xff1a;如果有7個蘋果和3個盤子&#xff0c;&#xff08;5&#xff0c;1&#xff0c;1&#xff09;和&#xff08;1&#xff0c;5&#xff0c;1&…

spring集成mybatis簡單教程

首先說下實現了什么效果&#xff0c;就是不用每次查詢前手動創建 sessionFactory和添加datasource文件了。 整個工程結構是這樣的 這次我也把代碼放在了gitee上&#xff0c;方便大家更全貌的看到所有的實現細節。代碼鏈接如下&#xff1a; Java: 一些Java代碼 (gitee.com) …

大話數據結構-查找-多路查找樹

注&#xff1a;本文同步發布于稀土掘金。 7 多路查找樹 多路查找樹&#xff08;multi-way search tree&#xff09;&#xff0c;其每個結點的孩子可以多于兩個&#xff0c;且每一個結點處可以存儲多個元素。由于它是查找樹&#xff0c;所有元素之間存在某種特定的排序關系。 …

排序:歸并排序

目錄 歸并排序——有遞歸的&#xff1a; 基本思想&#xff1a; 思路分析&#xff1a; 代碼分析&#xff1a; 劃分區間思路&#xff1a; 代碼思路分析&#xff1a; 歸并排序——有遞歸的&#xff1a; 基本思想&#xff1a; 歸并排序&#xff08;MERGE-SORT&#xff…

2023 CCF中國軟件大會(CCF ChinaSoft)“軟件工程教育”論壇 成功召開

2023年12月1日&#xff0c;2023年度CCF中國軟件大會“軟件工程教育”論壇成功召開。 ? 自去年來大模型技術的出現以及在各個領域的應用&#xff0c;對相關的學科和行業產生了深刻的影響。軟件工程首當其沖&#xff0c;以ChatGpt和CopilotX等為代表的智能化開發工具可以幫助軟…