【python基礎(三)】操作列表:for循環、正確縮進、切片的使用、元組

文章目錄

  • 一. 遍歷整個列表
    • 1. 在for循環中執行更多操作
    • 2. 在for循環結束后執行一些操作
  • 二. 避免縮進錯誤
  • 三. 創建數值列表
    • 1. 使用函數range()
    • 2. 使用range()創建數字列表
    • 3. 指定步長。
    • 4. 對數字列表執行簡單的統計計算
    • 5. 列表解析
  • 五. 使用列表的一部分-切片
    • 1. 切片
    • 2. 遍歷切片
    • 3. 復制列表(淺拷貝與深拷貝)
    • 4. 元組

一. 遍歷整個列表

if __name__ == '__main__':magicians = ['alice', 'david', 'carolina']for magician in magicians:print(magician)

?

1. 在for循環中執行更多操作

if __name__ == '__main__':magicians = ['alice', 'david', 'carolina']for magician in magicians:print(f"{magician.title()}, that was a great trick")

?

2. 在for循環結束后執行一些操作

在for循環后面,沒有縮進的代碼都只執行一次,不會重復執行。

if __name__ == '__main__':magicians = ['alice', 'david', 'carolina']for magician in magicians:print(f"{magician.title()}, that was a great trick")print("Thank you。")

?

二. 避免縮進錯誤

Python根據縮進來判斷代碼行與前一個代碼行的關系。

簡單地說,它要求你使用縮進讓代碼整潔而結構清晰。在較長的Python程序中,你將看到縮進程度各不相同的代碼塊,從而對程序的組織結構有大致的認識。

下面來看一些較為常見的縮進錯誤。

忘記縮進
對于位于for語句后面且屬于循環組成部分的代碼行,一定要縮進。

忘記縮進額外的代碼行:

  magicians = ['alice', 'david', 'carolina']for magician in magicians:print(f"{magician.title()}, that was a great trick!")print(f"I can't wait to see your next trick, {magician.title()}.\n") # 也需要進行縮進

?
不必要的縮進
函數調用print()(見?)無須縮進,因為它并非循環的組成部分。

  message = "Hello Python world!"
?     print(message)

在這里插入圖片描述
?
遺漏了冒號
for語句末尾的冒號告訴Python,下一行是循環的第一行。

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

如果不小心遺漏了冒號,如?所示,將導致語法錯誤,因為Python不知道你意欲何為。

?

三. 創建數值列表

1. 使用函數range()

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

它不會打印5,只有1到4。

?

2. 使用range()創建數字列表

要創建數字列表,可使用函數list()將range()的結果直接轉換為列表。

numbers = list(range(1, 6))
print(numbers)

?

3. 指定步長。

為此,可給這個函數指定第三個參數,看一個例子:
打印1~10的偶數:

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

?
創建一個列表,其中包含前10個整數(1~10)的平方

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

?

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

最小、最大、總和。

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

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

?

5. 列表解析

列表解析將for循環和創建新元素的代碼合并成一行,并自動附加新元素

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

?

五. 使用列表的一部分-切片

處理列表的部分元素,Python稱之為切片。

1. 切片

要創建切片,可指定要使用的第一個元素和最后一個元素的索引。與函數range()一樣,Python在到達第二個索引之前的元素后停止。

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

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

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

如果要提取從第三個元素到列表末尾的所有元素,可將起始索引指定為2,并省略終止索引:

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

如果要輸出名單上的最后三名隊員,可使用切片players[-3:]:

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

?

2. 遍歷切片

遍歷前三名隊員,并打印他們的名字:

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

?

3. 復制列表(淺拷貝與深拷貝)

要復制列表,可創建一個包含整個列表的切片,方法是同時省略起始索引和終止索引([:])。

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

如果只是將my_foods賦給friend_foods,就不能得到兩個列表。

  my_foods = ['pizza', 'falafel', 'carrot cake']# 這行不通:
? friend_foods = my_foodsmy_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)# My favorite foods are:
# ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']# My friend's favorite foods are:
# ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

這種語法實際上是讓Python將新變量friend_foods關聯到已與my_foods相關聯的列表,因此這兩個變量指向同一個列表。類似于淺拷貝。

?

4. 元組

Python將不能修改的值稱為不可變的,而不可變的列表被稱為元組。

定義元組
元組看起來很像列表,但使用圓括號而非中括號來標識。
定義元組后,就可使用索引來訪問其元素,就像訪問列表元素一樣。

? dimensions = (200, 50)
? print(dimensions[0])print(dimensions[1])
dimensions = (200, 50)
for dimension in dimensions:print(dimension)

雖然不能修改元組的元素,但可以給存儲元組的變量賦值。因此,如果要修改前述矩形的尺寸,可重新定義整個元組:

? dimensions = (200, 50)print("Original dimensions:")for dimension in dimensions:print(dimension)? dimensions = (400, 100)
? print("\nModified dimensions:")for dimension in dimensions:print(dimension)

如果需要存儲的一組值在程序的整個生命周期內都不變,就可以使用元組。

?

參考:《Python編程:從入門到實踐(第二版)》

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

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

相關文章

【并發編程】ThreadLocal詳解與原理

📫作者簡介:小明Java問道之路,2022年度博客之星全國TOP3,專注于后端、中間件、計算機底層、架構設計演進與穩定性建設優化,文章內容兼具廣度、深度、大廠技術方案,對待技術喜歡推理加驗證,就職于…

【電路筆記】-電流源

電流源 文章目錄 電流源1、概述1.1 理想電流源1.2 實際電流源1.3 連接規則 2、依賴電流2.1 壓控電流源2.2 電流控制電流源 3、總結 本文為前面文章 電壓源的延續,我們將在本文介紹電流源。 與電壓源的情況類似,我們將首先介紹理想電流源的概念&#xff…

MySQL 8.2 Command Line Client打開時一閃而過閃退問題

MySQL8.2安裝成功后,發現打開MySQL 8.0 Command Line Client時出現一閃而過,打不開的情況。 解決方案: 1、打開MySQL 8.2 Command Line Client文件位置 2、右鍵選擇屬性 3、復制它的目標 4、我復制下來的目標路徑是這樣的,"…

關于 Docker

關于 Docker 1. 術語Docker Enginedockerd(Docker daemon)containerdOCI (Open Container Initiative)runcDocker shimCRI (Container Runtime Interface)CRI-O 2. 容器啟動過程在 Linux 中的實現daemon 的作用 Docker 是個劃時代的開源項目,…

[計算機網絡實驗]頭歌 實驗二 以太網幀、IP報文分析(含部分分析)

目錄 第1關:Wireshark基本使用入門 【實驗目的】 【實驗環境】 【本地主機、平臺虛擬機之間數據傳遞】 wireshark基本用法】 1、wireshark主界面 2、抓取分組操作 3、Wireshark窗口功能 4、篩選分組操作 【實驗操作】 ?編輯 第2關:Ethernet幀…

編程語言發展史:C++語言的發展和應用

預計更新 第一部分:早期編程語言 1.1布爾代數和機器語言 1.2匯編語言的出現和發展 1.3高級語言的興起 第二部分:主流編程語言 1.1 C語言的誕生及其影響 1.2 C語言的發展和應用 1.3 Java語言的出現和發展 1.4 Python語言的興起和特點 1.5 JavaScript語言…

基于Towers of Binary Fields的succinct arguments

1. 引言 Ulvetanna團隊Benjamin E. Diamond和Jim Posen 2023年論文《Succinct Arguments over Towers of Binary Fields》,開源代碼見: https://github.com/recmo/binius(Rust Sage)【基于plonky3等庫】 在該論文中&#xff1…

Apache POI簡介

三十二、Apache POI 32.1 介紹 Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目。簡單來說就是,我們可以使用POI在Java程序中對Miscrosoft Office各種文件進行讀寫操作。 一般情況下,POI都是用于操作Excel文件。 Apache POI 的應用場…

基于區域劃分的GaN HEMT 準物理大信號模型

GaN HEMT器件的大信號等效電路模型分為經驗基模型和物理基模型。經驗基模型具有較高精度但參數提取困難,特別在GaN HEMT器件工藝不穩定的情況下不易應用。相比之下,物理基模型從器件工作機理出發,參數提取相對方便,且更容易更新和…

火山引擎 ByteHouse 的增強型數據導入技術實踐

作為企業數字化建設的必備要素,易用的數據引擎能幫助企業提升數據使用效率,更好提升數據應用價值,夯實數字化建設基礎。 數據導入是衡量OLAP引擎性能及易用性的重要標準之一,高效的數據導入能力能夠加速數據實時處理和分析的效率。…

Sa-Token 整合Java17和SpringBoot

目錄 前言引入項目開啟登錄認證路由攔截鑒權解決兼容問題總結 前言 之前無意中發現Sa-Token權限認證框架,項目十分好用。 項目地址: https://github.com/dromara/sa-token 官網地址: https://sa-token.cc/doc.html#/start/example 我的個人…

如何輕松應對企業網絡管理挑戰,釋放網絡靈活性

企業在日常經營中,越來越依賴于云應用程序,分散的團隊和統一通信。這些變化使得保持網絡連接性不僅是必要的,而且對任務的成功完成至關重要。 傳統的廣域網(WAN)并不總能適應這些挑戰,因為它們往往無法提供…

不停的挖掘硬盤的最大潛能

從 NAS 上退休的硬盤被用在了監控的存儲上了。 隨著硬盤使用壽命的接近尾聲,感覺就是從高附加值數據到低附加值數據上。監控數據只會保留那么幾個月的時間,很多時候都會被覆蓋重新寫入。 有人問為什么監控數據不保留幾年的,那是因為監控數據…

java_函數式接口

文章目錄 一、什么是函數式接口二、四大核心函數式接口三、使用舉例 一、什么是函數式接口 如果一個接口只有一個抽象方法,那么該接口就是一個函數式接口函數式接口的實例可以通過 lambda 表達式、方法引用或者構造方法引用來創建如果我們在某個接口上聲明了 Funct…

【Unity入門】鼠標輸入和鍵盤輸入

Unity的Input類提供了許多監聽用戶輸入的方法,比如我們常見的鼠標,鍵盤,手柄等。我們可以用Input類的接口來獲取用戶的輸入信息 一、監聽鼠標輸入 GetMouseButtonUp 、GetMouseButtonDown、GetMouseButton input.GetMouseButtonDown和 inp…

從mysql源碼編譯出相應的庫和可執行文件及搭建mysql服務端

目錄 1. 問題的提出 2. 源碼下載 3. 升級或安裝某些前置軟件 3.1. 升級CMake 3.2. 升級gcc、g 4. 安裝依賴庫 4.1. 安裝OpenSSL 4.2. 安裝Curses 4.3. 安裝pkg-config 5. 編譯、安裝 6. 編譯結果、配置 7. 編譯錯誤處理 7.1. 錯誤1 7.2. 錯誤2 8. 搭建mysql數…

VMware三種網絡模式

橋接模式 NAT(網絡地址轉換模式) Host-Only(僅主機模式) 參考: vmware虛擬機三種網絡模式 - 知乎 (zhihu.com)

【中國平安社招校招】【內推】【當天內推】

中國平安社招校招內推 通過內推鏈接即時內推,反饋速度比正常要快(可私信問進度) 開放大量HC(不限崗位和地區,技術、設計、產品、運營、數據等都可內推) Step1:查看相關職位 瀏覽平安的招聘官網:復制以下地址至瀏覽器打開。注意以下鏈接包含…

一篇文章搞懂WPF動畫的使用技巧

WPF 動畫系統提供了豐富的功能,用于為 UI 元素創建流暢的動態效果。動畫可以應用于任何可用于渲染的屬性,比如位置、顏色、大小等。在 WPF 中,動畫是通過更改隨時間變化的屬性來實現的。 WPF動畫基本用法 例如實現如下的動畫效果&#xff1…

合并區間問題

以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。 示例 1: 輸入:intervals [[1,…