簡單分享 for循環,從基礎到高級

1.?基礎篇:Hello, For Loop!

想象一下,你想給班上的每位同學發送“Hello!”,怎么辦?那就是for循環啦,

eg:首先有個名字的列表,for循環取出,分別打印

names?=?["Alice",?"Bob",?"Charlie"]
for?name?in?names:
????print(f"Hello,?{name}!")

2.?計數助手:enumerate來幫忙

給每個同學編號,是不是更正式點?enumerate函數能助你一臂之力:

for num,name in enumerate(names):

???print(f"{i+1}.?Hello,?{name}!")

3.?列表生成式:簡潔之美

想要快速創建一個新列表,比如每個名字后面加個"!"?

excited_names?=?[f"{name}!"?for?name?in?names]
print(excited_names)

4.?范圍函數range的魔法

想數數?range函數是你的數字精靈:

for?i?in?range(9):??#?從0到8,數頭不數尾
????print(i)

5.?嵌套循環:編織復雜圖案

記得小時候的九九乘法表嗎?Python幫你輕松繪制:俄羅斯套娃,一層又一層。

for?i?in?range(1,?10):
????for?j?in?range(1,?i+1):
????????print(f"{j}x{i}={i*j}",?end="\t")
????print()??#?換行

6.?break和continue:控制流的指揮棒

遇到不喜歡的同學,直接跳過?continue出場:

for?name?in?names:
????if?name?==?"Bob":
????????continue
????print(f"Hello,?{name}!")

7.?else子句:循環的附加驚喜

你知道嗎?for循環后還能跟個else?如果循環正常結束,沒有遇到breakelse里的代碼就執行。

for?i?in?range(5):
????if?i?==?3:
????????break
else:
????print("循環順利完成,沒被break掉!")

8.?使用zip:并行處理

有兩組數據要一起處理?zip函數讓你左右開弓:zip就像一條神奇的紐帶,把列表綁在一起

names?=?["Alice",?"Bob",?"Charlie"]
ages?=?[16,?17,?20]
for?name,?age?in?zip(names,?ages):
????print(f"{name}?is?{age}?years?old.")

9.?遍歷字典:鍵值對的舞蹈

字典里的秘密,for也能探查:通過.items(),每個鍵值對都跳起了雙人舞。

my_dict?=?{"pear": 5,?"banana": 9,?"orange": 98}
for?key,?value?in?my_dict.items():
????print(f"I?have?{value}?{key}(s).")

10.?逆序循環:時光倒流

想反著數數,或者倒著念名字?用reversed函數:時光倒流,從最后一個同學開始告別。

for?name?in?reversed(names):
????print(f"Goodbye,?{name}!")

11.?迭代器與next函數:深海探險

知道嗎?所有可迭代對象都可以用迭代器來玩:iter()制造潛水艇,next()帶你潛入下一個寶藏。

it?=?iter(names)
print(next(it))??
print(next(it))??

12.?高級技巧:列表推導結合條件判斷

結合條件,快速篩選出喜歡的名字:

vowel_start_names?=?[name?for?name?in?names?if?name[0].lower()?in?'aeiou']
print(vowel_start_names)

13.?生成器表達式:輕量級迭代神器

生成器是Python的一大特色,非常適合處理大數據流。

#?生成所有小于10的平方數,但不一次性加載到內存中
squares?=?(i**2?for?i?in?range(10))
for?square?in?squares:
????print(square)

14.?列表推導與循環嵌套的高級應用

當你需要處理多維數據時,嵌套的列表推導可以非常直觀:這段代碼仿佛是在進行空間變換,將矩陣沿主對角線翻轉。

matrix?=?[
????[1,?2,?3],
????[4,?5,?6],
????[7,?8,?9]
]

#?轉置矩陣
transposed?=?[[row[i]?for?row?in?matrix]?for?i?in?range(3)]
for?row?in?transposed:
????print(row)

15.?利用itertools:循環的高級工具箱

Python的itertools模塊提供了強大的迭代工具。比如,你想交替合并兩個列表:

itertools就像一個瑞士軍刀,里面藏著各種循環處理的利器。

from?itertools?import?chain

list1?=?[1,?2,?3]
list2?=?['a',?'b',?'c']

#?使用chain交替合并
merged?=?list(chain.from_iterable(zip(list1,?list2)))
print(merged)??#?結果:?[1,?'a',?2,?'b',?3,?'c']

16.?循環效率優化:理解迭代原理

了解Python的迭代機制能幫助你寫出更高效的代碼。例如,避免在循環內部進行列表的append操作,特別是在循環體很大時,可以考慮預分配列表大小或使用列表生成式。

17.?循環與異常處理:穩健的循環

在處理可能拋出異常的循環時,使用try-except可以增加代碼的健壯性,即使遇到除以零的錯誤,循環也不會終止,而是優雅地處理異常,eg:

numbers?=?[1,?0,?3,?4]
for?num?in?numbers:
????try:
????????print(1?/?num)
????except?ZeroDivisionError:
????????print("Oops!?Can't?divide?by?zero.")

好了,今天的分享就到這里了,有喜歡的哥哥姐姐們,歡迎大家留言討論^_^如果本文對你有幫助,請點贊、轉發哦

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

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

相關文章

Apache APISIX 介紹

Apache APISIX 是一個動態、實時、高性能的云原生API網關,屬于Apache軟件基金會旗下的項目。以下是對Apache APISIX的詳細介紹: 一、基本概述 定義:Apache APISIX是一個提供豐富流量管理功能的云原生API網關。功能:包括負載均衡…

git出現Permission denied問題

Warning: Permanently added ‘icode.baidu.com,10.11.81.103’ (RSA) to the list of known hosts. Permission denied (baas,keyboard-interactive,publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the…

nodejs操作excel文件實例,讀取sheets, 設置cell顏色

本代碼是我幫客戶做的兼職的實例,涉及用node讀取excel文件,遍歷sheets,給單元格設置顏色等操作,希望對大家接活有所幫助。 gen.js let dir"D:\\武漢煙廠\\山東區域\\備檔資料\\銷區零售終端APP維護清單\\走訪檔案\\2024年6月…

Spring之事務失效的場景

Spring事務失效的場景 異常捕獲處理:自己處理了異常,沒有拋出。解決:手動拋出拋出檢查異常:配置rollbackFor屬性為Excetion非public方法導致事務失效,改為public 1、異常捕獲處理 示例: 張三1000元&#…

7月形勢分析-您下一步該如何做,才能走出困境?

馬上工程項目,再有三五天就要結束的了。即便推后也不會超過一周時間了。所以需要考慮將來干啥呢?  一方面就是繼續去濟寧做建筑工程的活。管吃住,但是因為至親之間,難免咋說呢,總之還是不太舒服的樣子。管事情多&…

bigNumber的部分使用方法與屬性

場景:最近做IoT項目的時候碰到一個問題,涉及到雙精度浮點型的數據范圍的校驗問題。業務上其實有三種類型:int、float和double類型三種。他們的范圍分別是: //int int: [-2147483648, 2147483647],//float float: [-3402823466385…

PHP7源碼結構

PHP7程序的執行過程 1.PHP代碼經過詞法分析轉換為有意義的Token; 2.Token經過語法分析生成AST(Abstract Synstract Syntax Tree,抽象語法樹); 3.AST生成對應的opcode,被虛擬機執行。 源碼結構&#xff1…

一切為了安全丨2024中國應急(消防)品牌巡展武漢站成功召開!

消防品牌巡展武漢站 6月28日,由中國安全產業協會指導,中國安全產業協會應急創新分會、應急救援產業網聯合主辦,湖北消防協會協辦的“一切為了安全”2024年中國應急(消防)品牌巡展-武漢站成功舉辦。該巡展旨在展示中國應急(消防&am…

qt QTreeView的簡單使用(多級子節點)

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);setWindowTitle("QTreeView的簡單使用");model new QStandardItemModel;model->setHorizontalHeaderLabels(QStringList() << "left&q…

【數據結構 - 時間復雜度和空間復雜度】

文章目錄 <center>時間復雜度和空間復雜度算法的復雜度時間復雜度大O的漸進表示法常見時間復雜度計算舉例 空間復雜度實例 時間復雜度和空間復雜度 算法的復雜度 算法在編寫成可執行程序后&#xff0c;運行時需要耗費時間資源和空間(內存)資源 。因此衡量一個算法的好壞&…

[leetcode]longest-arithmetic-subsequence-of-given-difference. 最長定差子序列

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int longestSubsequence(vector<int> &arr, int difference) {int ans 0;unordered_map<int, int> dp;for (int v: arr) {dp[v] dp[v - difference] 1;ans max(ans, dp[v]);}return ans…

Qt源碼分析:窗體繪制與響應

作為一套開源跨平臺的UI代碼庫&#xff0c;窗體繪制與響應自然是最為基本的功能。在前面的博文中&#xff0c;已就Qt中的元對象系統(反射機制)、事件循環等基礎內容進行了分析&#xff0c;并捎帶闡述了窗體響應相關的內容。因此&#xff0c;本文著重分析Qt中窗體繪制相關的內容…

ECharts 快速入門

文章目錄 1. 引入 ECharts2. 初始化 ECharts 實例3. 配置圖表選項4. 使用配置項生成圖表5. 最常用的幾種圖形5.1 柱狀圖&#xff08;Bar Chart&#xff09;5.2 折線圖&#xff08;Line Chart&#xff09;5.3 餅圖&#xff08;Pie Chart&#xff09;5.4 散點圖&#xff08;Scatt…

如何完成域名解析驗證

一&#xff1a;什么是DNS解析&#xff1a; DNS解析是互聯網上將人類可讀的域名&#xff08;如www.example.com&#xff09;轉換為計算機可識別的IP地址&#xff08;如192.0.2.1&#xff09;的過程&#xff0c;大致遵循以下步驟&#xff1a; 查詢本地緩存&#xff1a;當用戶嘗…

Linux內核 -- 多線程之完成量completion的使用

Linux Kernel Completion 使用指南 在Linux內核編程中&#xff0c;completion是一個用于進程同步的機制&#xff0c;常用于等待某個事件的完成。它提供了一種簡單的方式&#xff0c;讓一個線程等待另一個線程完成某項任務。 基本使用方法 初始化 completion結構需要在使用之…

順序串算法庫構建

學習賀利堅老師順序串算法庫 數據結構之自建算法庫——順序串_創建順序串s1,創建順序串s2-CSDN博客 本人詳細解析博客 串的概念及操作_串的基本操作-CSDN博客 版本更新日志 V1.0: 在賀利堅老師算法庫指導下, 結合本人詳細解析博客思路基礎上,進行測試, 加入異常彈出信息 v1.0補…

已解決java.awt.geom.NoninvertibleTransformException:在Java2D中無法逆轉的轉換的正確解決方法,親測有效!!!

已解決java.awt.geom.NoninvertibleTransformException&#xff1a;在Java2D中無法逆轉的轉換的正確解決方法&#xff0c;親測有效&#xff01;&#xff01;&#xff01; 目錄 問題分析 出現問題的場景 報錯原因 解決思路 解決方法 1. 檢查縮放因子 修改后的縮放變換 …

關鍵路徑——C語言(理論)

關鍵路徑&#xff0c;是項目網絡中從起始事件到終止事件的最長路徑&#xff0c;決定了項目的最短完成時間。 關鍵路徑中的任務沒有任何可調整的余地&#xff0c;如果任何一個任務被延遲&#xff0c;整個項目的完成時間也會被延遲。 假設我們現在有一個圖&#xff1a;把圖的邊…

node編譯打包Error: error:0308010C:digital envelope routines::unsupported

問題描述&#xff1a; 報錯&#xff1a;Error: error:0308010C:digital envelope routines::unsupported 報錯原因&#xff1a; 主要是因為 nodeJs V17 版本發布了 OpenSSL3.0 對算法和秘鑰大小增加了更為嚴格的限制&#xff0c;nodeJs v17 之前版本沒影響&#xff0…

【CH32V305FBP6】USBD HS 虛擬串口分析

文章目錄 前言分析端點 0USBHS_UIS_TOKEN_OUT 端點 2USBHS_UIS_TOKEN_OUTUSBHS_UIS_TOKEN_IN 前言 虛擬串口&#xff0c;端口 3 單向上報&#xff0c;端口 2 雙向收發。 分析 端點 0 USBHS_UIS_TOKEN_OUT 設置串口參數&#xff1a; 判斷 USBHS_SetupReqCode CDC_SET_LIN…