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

目錄

4.2.5 遺漏了冒號

4.3 創建數值列表

4.3.1 使用函數 range()

4.3.2 使用 range()創建數字列表

結果如下:

4.3.3 對數字列表執行簡單的統計計算

4.3.4 列表解析

4.4 使用列表的一部分

4.4.1 切片

4.4.2 遍歷切片

4.4.3 復制列表


4.2.5 遺漏了冒號

for語句末尾的冒號告訴Python,下一行是循環的第一行

magicians = ['alice', 'david', 'carolina']
1 for magician in magiciansprint(magician) 

如果你不小心遺漏了冒號,如1所示,將導致語法錯誤,因為Python不知道你意欲何為。這 種錯誤雖然易于消除,但并不那么容易發現。程序員為找出這樣的單字符錯誤,花費的時間多得 令人驚訝。這樣的錯誤之所以難以發現,是因為通常在我們的意料之外。

4.3 創建數值列表

需要存儲一組數字的原因有很多,例如,在游戲中,需要跟蹤每個角色的位置,還可能需要 跟蹤玩家的幾個最高得分。在數據可視化中,處理的幾乎都是由數字(如溫度、距離、人口數量、 經度和緯度等)組成的集合。

列表非常適合用于存儲數字集合,而Python提供了很多工具,可幫助你高效地處理數字列表。 明白如何有效地使用這些工具后,即便列表包含數百萬個元素,你編寫的代碼也能運行得很好。

4.3.1 使用函數 range()

Python函數range()讓你能夠輕松地生成一系列的數字。例如,可以像下面這樣使用函數 range()來打印一系列的數字:

numbers.py

for value in range(1,5):print(value) 

上述代碼好像應該打印數字1~5,但實際上它不會打印數字5:

1
2
3
4

在這個示例中,range()只是打印數字1~4,這是你在編程語言中經常看到的差一行為的結果。 函數range()讓Python從你指定的第一個值開始數,并在到達你指定的第二個值后停止,因此輸出 不包含第二個值(這里為5)。

要打印數字1~5,需要使用range(1,6):

1
2
3
4
5 

使用range()時,如果輸出不符合預期,請嘗試將指定的值加1或減1。

4.3.2 使用 range()創建數字列表

要創建數字列表,可使用函數list()將range()的結果直接轉換為列表。如果將range()作為list()的參數,輸出將為一個數字列表。 在前一節的示例中,我們打印了一系列數字。要將這些數字轉換為一個列表,可使用list():

numbers = list(range(1,6))
print(numbers) 
結果如下:
[1, 2, 3, 4, 5] 

使用函數range()時,還可指定步長。例如,下面的代碼打印1~10內的偶數:

even_numbers.py

even_numbers = list(range(2,11,2))
print(even_numbers)

在這個示例中,函數range()從2開始數,然后不斷地加2,直到達到或超過終值(11),因此 輸出如下:

[2, 4, 6, 8, 10] 

使用函數range()幾乎能夠創建任何需要的數字集,例如,如何創建一個列表,其中包含前 10個整數(即1~10)的平方呢?在Python中,兩個星號(**)表示乘方運算。下面的代碼演示了 如何將前10個整數的平方加入到一個列表中:

squares.py

1squares = []
2 for value in range(1,11):
3 square = value**2
4 squares.append(square)
5 print(squares)

首先,我們創建了一個空列表(見1);接下來,使用函數range()讓Python遍歷1~10的值(見 2)。在循環中,計算當前值的平方,并將結果存儲到變量square中(見3)。然后,將新計算得 到的平方值附加到列表squares末尾(見4)。最后,循環結束后,打印列表squares(見5):

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

為讓這些代碼更簡潔,可不使用臨時變量square,而直接將每個計算得到的值附加到列表 末尾:

squares = []
for value in range(1,11):
1 squares.append(value**2)
print(squares) 

1處的代碼與squares.py中2處和3處的代碼等效。在循環中,計算每個值的平方,并立即將 結果附加到列表squares的末尾。

創建更復雜的列表時,可使用上述兩種方法中的任何一種。有時候,使用臨時變量會讓代碼 更易讀;而在其他情況下,這樣做只會讓代碼無謂地變長。你首先應該考慮的是,編寫清晰易懂 且能完成所需功能的代碼;等到審核代碼時,再考慮采用更高效的方法。

4.3.3 對數字列表執行簡單的統計計算

有幾個專門用于處理數字列表的Python函數。例如,你可以輕松地找出數字列表的最大值、 最小值和總和:

>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45

注意 出于版面考慮,本節使用的數字列表都很短,但這里介紹的知識也適用于包含數百萬個 數字的列表。


4.3.4 列表解析

前面介紹的生成列表squares的方式包含三四行代碼,而列表解析讓你只需編寫一行代碼就 能生成這樣的列表。列表解析將for循環和創建新元素的代碼合并成一行,并自動附加新元素。 面向初學者的書籍并非都會介紹列表解析,這里之所以介紹列表解析,是因為等你開始閱讀他人 編寫的代碼時,很可能會遇到它們。

下面的示例使用列表解析創建你在前面看到的平方數列表:

squares.py

squares = [value**2 for value in range(1,11)]
print(squares) 

要使用這種語法,首先指定一個描述性的列表名,如squares;然后,指定一個左方括號, 并定義一個表達式,用于生成你要存儲到列表中的值。在這個示例中,表達式為value**2,它計 算平方值。接下來,編寫一個for循環,用于給表達式提供值,再加上右方括號。在這個示例中,for循環為for value in range(1,11),它將值1~10提供給表達式value**2。請注意,這里的for 語句末尾沒有冒號。

結果與你在前面看到的平方數列表相同:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 

要創建自己的列表解析,需要經過一定的練習,但能夠熟練地創建常規列表后,你會發現這 樣做是完全值得的。當你覺得編寫三四行代碼來生成列表有點繁復時,就應考慮創建列表解析了。

4.4 使用列表的一部分

在第3章中,你學習了如何訪問單個列表元素。在本章中,你一直在學習如何處理列表的所 有元素。你還可以處理列表的部分元素——Python稱之為切片。

4.4.1 切片

要創建切片,可指定要使用的第一個元素和最后一個元素的索引。與函數range()一樣,Python 在到達你指定的第二個索引前面的元素后停止。要輸出列表中的前三個元素,需要指定索引0~3, 這將輸出分別為0、1和2的元素。 下面的示例處理的是一個運動隊成員列表:

players.py

players = ['charles', 'martina', 'michael', 'florence', 'eli']
1 print(players[0:3])

1處的代碼打印該列表的一個切片,其中只包含三名隊員。輸出也是一個列表,其中包含前 三名隊員:

['charles', 'martina', 'michael'] 

你可以生成列表的任何子集,例如,如果你要提取列表的第2~4個元素,可將起始索引指定 為1,并將終止索引指定為4:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[1:4]) 

這一次,切片始于'marita',終于'florence':

['martina', 'michael', 'florence'] 

如果你沒有指定第一個索引,Python將自動從列表開頭開始:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4]) 

由于沒有指定起始索引,Python從列表開頭開始提取:

['charles', 'martina', 'michael', 'florence']

要讓切片終止于列表末尾,也可使用類似的語法。例如,如果要提取從第3個元素到列表末 尾的所有元素,可將起始索引指定為2,并省略終止索引:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:]) 

Python將返回從第3個元素到列表末尾的所有元素:

['michael', 'florence', 'eli'] 

無論列表多長,這種語法都能夠讓你輸出從特定位置到列表末尾的所有元素。本書前面說過, 負數索引返回離列表末尾相應距離的元素,因此你可以輸出列表末尾的任何切片。例如,如果你 要輸出名單上的最后三名隊員,可使用切片players[-3:]:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:]) 

上述代碼打印最后三名隊員的名字,即便隊員名單的長度發生變化,也依然如此。

4.4.2 遍歷切片

如果要遍歷列表的部分元素,可在for循環中使用切片。在下面的示例中,我們遍歷前三名 隊員,并打印他們的名字:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
1 for player in players[:3]:print(player.title()) 

?處的代碼沒有遍歷整個隊員列表,而只遍歷前三名隊員:

Here are the first three players on my team:
Charles
Martina
Michael

在很多情況下,切片都很有用。例如,編寫游戲時,你可以在玩家退出游戲時將其最終得分 加入到一個列表中。然后,為獲取該玩家的三個最高得分,你可以將該列表按降序排列,再創建 一個只包含前三個得分的切片。處理數據時,可使用切片來進行批量處理;編寫Web應用程序時, 可使用切片來分頁顯示信息,并在每頁顯示數量合適的信息。

4.4.3 復制列表

你經常需要根據既有列表創建全新的列表。下面來介紹復制列表的工作原理,以及復制列表 可提供極大幫助的一種情形。

要復制列表,可創建一個包含整個列表的切片,方法是同時省略起始索引和終止索引([:])。 這讓Python創建一個始于第一個元素,終止于最后一個元素的切片,即復制整個列表。

例如,假設有一個列表,其中包含你最喜歡的四種食品,而你還想創建另一個列表,在其中 包含一位朋友喜歡的所有食品。不過,你喜歡的食品,這位朋友都喜歡,因此你可以通過復制來 創建這個列表:

foods.py

1 my_foods = ['pizza', 'falafel', 'carrot cake']
2 friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

我們首先創建了一個名為my_foods的食品列表(見1),然后創建了一個名為friend_foods的 新列表(見2)。我們在不指定任何索引的情況下從列表my_foods中提取一個切片,從而創建了 這個列表的副本,再將該副本存儲到變量friend_foods中。打印每個列表后,我們發現它們包含‘的食品相同:

My favorite foods are:
['pizza', 'falafel', 'carrot cake']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake'] 

為核實我們確實有兩個列表,下面在每個列表中都添加一種食品,并核實每個列表都記錄了 相應人員喜歡的食品:

my_foods = ['pizza', 'falafel', 'carrot cake']
1 friend_foods = my_foods[:]
2 my_foods.append('cannoli')
3 friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

與前一個示例一樣,我們首先將my_foods的元素復制到新列表friend_foods中(見1)。接下 來,在每個列表中都添加一種食品:在列表my_foods中添加'cannoli'(見2),而在friend_foods 中添加'ice cream'(見3)。最后,打印這兩個列表,核實這兩種食品包含在正確的列表中。

My favorite foods are:
4 ['pizza', 'falafel', 'carrot cake', 'cannoli']
My friend's favorite foods are:
5 ['pizza', 'falafel', 'carrot cake', 'ice cream']

4處的輸出表明,'cannoli'包含在你喜歡的食品列表中,而'ice cream'沒有。5處的輸出 表明,'ice cream'包含在你朋友喜歡的食品列表中,而'cannoli'沒有。倘若我們只是簡單地將 my_foods賦給friend_foods,就不能得到兩個列表。例如,下例演示了在不使用切片的情況下復 制列表的情況:

my_foods = ['pizza', 'falafel', 'carrot cake']
#這行不通
1 friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

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

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

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

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

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

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

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

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

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

相關文章

使用vue-quill-editor(富文本框)禁用粘貼圖片

問題描述:富文本框復制粘貼未走上傳圖片接口,會將復制的圖片解析為base64編碼,為了控制這種情況可選擇禁用粘貼圖片,或者監聽有復制粘貼的圖片走上傳圖片接口 獲取到 quill 對象,可以通過 refs 或者 Quill 對象的 getI…

小程序自動更新功能

小程序自動更新功能 在 .vue 頁面的 script 中添加生命周期,在生命周期內監聽頁面信息 onLoad onLoad(options) {this.getUserInfo()this.intervalId setInterval(() > {this.getUserInfo()}, 3000);},onUnload onUnload: function() {// 在頁面卸載時清除定時…

vue的data

類型:Object | Function 限制:組件的定義只接受 function。 詳細: Vue 實例的數據對象。Vue 會遞歸地把 data 的 property 轉換為 getter/setter,從而讓 data 的 property 能夠響應數據變化。對象必須是純粹的對象 (含有零個或多個…

DC電源模塊與節能環保的關系

BOSHIDA DC電源模塊與節能環保的關系 隨著全球能源危機的加劇,環保節能已經成為世界各國政府和企業發展的主要方向。在電子行業中, DC電源模塊的出現為環保節能做出了貢獻。DC電源模塊是一種電源供應器件,可將高電壓轉換為低電壓,…

柏林噪聲C++

柏林噪聲 隨機噪聲 如上圖所示隨機噪聲沒有任何規律可言,我們希望生成有一些意義的局部連續的隨機圖案 一維柏林噪聲 假設希望生成一段局部連續的隨機曲線,可以采用插值的方式:在固定點隨機分配y值(一般是整數點)&a…

【數據分析實戰】酒店行業華住集團門店分布與評分多維度分析

文章目錄 1. 寫在前面2. 數據集展示3. 多維度分析3.1 門店檔次多元化:集團投資戰略觀察3.1.1 代碼實現3.1.2 本人淺薄理解 3.2 門店分布:各省市分布概覽3.2.1 代碼實現3.2.2 本人淺薄理解 3.3 門店分級評分:服務水平的多維度觀察3.3.1 代碼實…

F5怎么樣?從負載均衡到云原生的進階之路

從Web時代開始至云原生時代的應用服務交付的市場,技術與人的變化就是關注的焦點。從單純的Web負載均衡到復雜的企業應用交付,從單體應用到分布式、微服務架構,F5為企業技術架構更好、更優、更安全的運行做出了極大的努力。那么F5怎么樣&#…

Vue 循環走馬燈

1、使用 transform: translateX(),循環將滾動內容在容器內偏移,超出容器部分隱藏; 2、避免滾動到末尾時出現空白,需要預留多幾個。 3、一次循環偏移的距離scrollLoopWidth 可能受樣式影響需要做些微調,比如單個item的…

題目:分糖果(藍橋OJ 2928)

題目描述&#xff1a; 解題思路&#xff1a; 本題采用貪心思想 圖解 題解&#xff1a; #include<bits/stdc.h> using namespace std;const int N 1e6 9; char s[N];//寫字符串數組的一種方法,像數組一樣***int main() {int n, x;cin >> n >> x;for(int …

CSS新手入門筆記整理:元素類型相互轉換

元素類型 塊元素&#xff08;block&#xff09; 獨占一行&#xff0c;排斥其他元素跟其位于同一行&#xff0c;包括塊元素和行內元素。塊元素內部可以容納其他塊元素和行內元素。可以定義 width&#xff0c;也可以定義 height。可以定義 4 個方向的 margin。 行內元素&#xf…

使用navicat(或者其他數據庫管理工具)、powerdesigner導出數據字典

適合先有數據庫結構&#xff0c;后需要導出數據字典的情況&#xff0c;多數在發開完成交文檔或者用戶有庫的情況下 有條件的話推薦用powerdesigner導出&#xff0c;比較好看 如果用powerdesigner導出的注釋不對&#xff0c;是因為數據庫的編碼不對 1、使用navicat導出 在該數…

代碼隨想錄算法訓練營第45天| 70. 爬樓梯 (進階) 322. 零錢兌換 279.完全平方數

JAVA代碼編寫 70. 爬樓梯&#xff08;進階版) 卡碼網&#xff1a;57. 爬樓梯&#xff08;第八期模擬筆試&#xff09; 題目描述 假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬至多m (1 < m < n)個臺階。你有多少種不同的方法可以爬到樓頂呢&#xff1f…

菜鳥學習日記(python)——推導式

python中的推導式是一種獨特的數據處理方式&#xff0c;可以從一個數據序列去構建另一個新的數據序列的結構體。 它包括以下推導式&#xff1a; 列表&#xff08;list&#xff09;推導式字典&#xff08;dict&#xff09;推導式集合&#xff08;set&#xff09;推導式元組&am…

Multi-Cell Downlink Beamforming: Direct FP, Closed-Form FP, Weighted MMSE

這里寫自定義目錄標題 Direct FPClosed-Form FPthe Lagrangian functionthe Lagrange dual function: maximizing the Lagrangianthe Lagrange dual problem: minimizing the Lagrange dual functionClosed-Form FP Weighted MMSE原論文 Lagrange dual5.1.1 The Lagrangian5.1.…

阿里云服務器經濟型、通用算力型、計算型、通用型、內存型實例區別及選擇參考

當我們通過阿里云的活動購買云服務器會發現&#xff0c;相同配置的云服務器往往有多個不同的實例可選&#xff0c;而且價格差別也比較大&#xff0c;例如同樣是4核8G的配置的云服務器&#xff0c;經濟型e實例活動價格只要1500.48/1年起&#xff0c;通用算力型u1實例要1795.97/1…

nvidia安裝出現7-zip crc error解決辦法

解決辦法&#xff1a;下載network版本&#xff0c;重新安裝。&#xff08;選擇自己需要的版本&#xff09; 網址&#xff1a;CUDA Toolkit 12.3 Update 1 Downloads | NVIDIA Developer 分析原因&#xff1a;local版本的安裝包可能在下載過程中出現損壞。 本人嘗試過全網說的…

linux 系統安全基線 安全加固操作

目錄 用戶口令設置 root用戶遠程登錄限制 檢查是否存在除root之外UID為0的用戶 ???????root用戶環境變量的安全性 ???????遠程連接的安全性配置 ???????用戶的umask安全配置 ???????重要目錄和文件的權限設置 ???????找未授權的SUID…

json轉yolo格式

json轉yolo格式 視覺分割得一些標注文件是json格式&#xff0c;比如&#xff0c;舌頭將這個舌頭區域分割出來&#xff08;用mask二值圖的形式&#xff09;&#xff0c;對舌頭的分割第一步是需要檢測出來&#xff0c;缺少數據集&#xff0c;可以使用分割出來的結果&#xff0c;將…

無公網IP環境如何SSH遠程連接Deepin操作系統

文章目錄 前言1. 開啟SSH服務2. Deppin安裝Cpolar3. 配置ssh公網地址4. 公網遠程SSH連接5. 固定連接SSH公網地址6. SSH固定地址連接測試 前言 Deepin操作系統是一個基于Debian的Linux操作系統&#xff0c;專注于使用者對日常辦公、學習、生活和娛樂的操作體驗的極致&#xff0…

數據儀表盤設計:可視化數據指標和報告

寫在開頭 在信息爆炸的時代,數據不再是簡單的數字和圖表,而是一種有機的信息體系。如何將這些琳瑯滿目的數據以一種直觀而高效的方式展示,成為企業決策者和分析師們共同關注的問題。本文將帶您深入學習如何設計和創建數據儀表盤,使數據指標和報告以一目了然的方式呈現。 …