日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】Python中的for循环,没你想的那么简单~

發布時間:2025/3/12 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】Python中的for循环,没你想的那么简单~ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

公眾號:尤而小屋
作者:Peter
編輯:Peter

一年四季,循環往復:說到底就是一個循環的問題

for語句實際上解決的是循環問題。在很多的高級語言中都有for循環(for loop)。

for語句其實是編程語言中針對可迭代對象的語句,它的主要作用是允許代碼被重復執行。看一段來自維基百科的介紹:

In computer science, a for-loop (or simply for loop) is a control flow statement for specifying iteration, which allows code to be executed repeatedly。(作用:介紹了for循環是什么?)

A for-loop has two parts: a header specifying the iteration, and a body which is executed once per iteration. (for循環是什么構成的?)

  • 是什么:在計算科學中,是針對特殊迭代對象的控制流語句,能夠重復執行

  • 怎么構成:一個頭部(是可迭代對象)+ 每個對象的執行

本文的主要內容如下,其他Python入門內容請參考:

簡潔且實用Python一行代碼,40個案例講解

6000+字:詳解python集合set,建議珍藏!!

如何學習Python數據分析:Peter幫你整理了一份資料!


1、可迭代對象

1.1什么是可迭代對象

可迭代對象(Iteratable Object) 是能夠一次返回其中一個成員的對象,比如我們常用的字符串、列表、元組、集合、字典等等之類的對象都屬于可迭代對象,獲取到這些對象我們就可以用for循環來進行操作。

簡單來理解,任何你可以循環遍歷的對象都是可迭代對象

1.2怎么判斷

如何判斷一個Python對象是不是可迭代對象?通常是使用 isinstance()函數來判斷對象是否是可迭代對象

from?collections?import?Iterable

小結:在Python常見的數據對象中,只有數字是不可迭代的,字符串、元組、列表、字典等都是可迭代的

2、字符串的for循環

一次遍歷打印字符串中的每個元素

for?i?in?"python":?print(i)p y t h o n

在看另一個例子:

for?i?in?"abcdefg":print(i)a b c d e f g

3、列表的for循環

不管是單層列表還是多層的嵌套列表,我們都可以遍歷打印出來:

#?單層列表a?=?["小明","小紅","小張","小王"]for?i?in?a:print(i)??#?打印列表中的每個元素小明 小紅 小張 小王#?嵌套列表b?=?["小明","小紅","小張","小王",[19,20,18,23]]for?i?in?b:print(i)小明 小紅 小張 小王 [19, 20, 18, 23]

上面的例子中最后一個元素當做整體被打印出來,如果也想分開打印呢?

def?qiantao(x):???#?定義一個函數for?each?in?x:??#?遍歷每個原始列表中的每個元素if?isinstance(each,?list):??#?判斷每個元素是否是列表:isintanceqiantao(each)??#?如果是列表,遞歸執行函數qiantao()else:print(each)??#?如果不是列表,就直接打印該元素b?=?["小明","小紅","小張","小王",[19,20,18,23]]#?調用函數,傳入列表b qiantao(b)小明 小紅 小張 小王 19 20 18 23

4、元組的for循環

元組tuple的循環和列表是類似的:

t?=?("小明","小紅","小王")for?i?in?t:print(i)小明 小紅 小王

5、字典的for循環

我們使用keys()、values()、items(),我們可以分別遍歷字典的鍵、值和鍵值對。需要注意的是:遍歷字典默認是遍歷字典的鍵,先定義一個字典:

d?=?{"name":"Peter","age":20,"sex":"male","address":"china"}

5.1keys()

遍歷字典的鍵;

for?i?in?d.keys():??#?遍歷字典的鍵print(i)name age sex addressfor?i?in?d:??#?默認就是遍歷鍵的取值print(i)name age sex address

5.2 values()

遍歷字典的值:

for?i?in?d.values():??#?遍歷字典的值print(i)Peter 20 male china

5.3 items()

同時遍歷字典的鍵和值

for?i?in?d.items():??#?遍歷字典的值print(i)('name', 'Peter') ('age', 20) ('sex', 'male') ('address', 'china')

分別取出字典的鍵和值:

for?k,v?in?d.items():print(k?+?"--->"?+?str(v))name--->Peter age--->20 sex--->male address--->china

6、range函數的for循環

range函數是 Python 內置函數,用于生成一系列連續整數,多用于 for 循環中。

range(start,stop,step)
  • start:包含start,默認為0,可不寫則默認為0

  • stop:不包含stop,必須寫

  • 步長step可正可負,默認是1,不能為0

1、基礎案例

range(10)??#?生成的是可迭代對象range(0, 10)

默認開頭是0

range(0,10)range(0, 10)

指定開頭為1

range(1,10)range(1, 10)

下面是將結果展開成列表:

list(range(10))??#?不包含10(尾部)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

指定步長為2:

list(range(0,10,2))??#?不包含10,步長是2[0, 2, 4, 6, 8]

總結:range函數是包含頭部不包含尾部

for?i?in?range(10):print(i)0 1 2 3 4 5 6 7 8 9

2、找出100以內能夠被5整除的數:

for?i?in?range(101):??#?不包含101,0-100if?i?%?5?==?0:??#?%表示求余數:余數為0則表示整除print(i,end="、")0、5、10、15、20、25、30、35、40、45、50、55、60、65、70、75、80、85、90、95、100、

3、高斯求和

求出1到100的所有數之和

sum?=?0for?i?in?range(1,101):sum?=?sum?+?i??#?每循環一次,sum就是這個數字sum5050

求出100以內奇數的和:

sum?=?0#?步長為2,從1開始:1,3,5,7... for?i?in?range(1,101,2):??sum?=?sum?+?isum2500

求出100以內偶數的和:

sum?=?0#?步長為2,從2開始:2,4,6,8... for?i?in?range(2,101,2):??sum?=?sum?+?isum2550

7、多個for語句

for語句中還可以再使用for語句:

for?i?in?["python","java","html"]:for?j?in?i:print(i.upper(),j)????# upper():將字母變成大寫PYTHON p PYTHON y PYTHON t PYTHON h PYTHON o PYTHON n JAVA j JAVA a JAVA v JAVA a HTML h HTML t HTML m HTML lfor?i?in?[4,5,6]:for?j?in?[1,2,3]:print(i*j)??#?實現任意兩個數的乘法4??#?4*1 8??#?4*2 12?#?4*3 5??#?5*1? 10?#?5*2 15?#?5*3 6??#?6*1 12?#?6*2 18?#?6*3

8、列表推導式

(1)上面我們提到能夠被5整除的數:使用for循環和if來解決

five?=?[]??#?定義空列表for?i?in?range(101):??#?不包含101,0-100if?i?%?5?==?0:??#?%表示求余數:余數為0則表示整除five.append(i)??#?添加到列表中five[0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100]

(2)使用列表推導式如何實現呢?

[x?for?x?in?range(101)?if?x?%?5?==?0][0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100]

9、for-else

也許你聽過if-else,但是聽到for-else語句嗎?這也算是Python中的一個冷門知識點

for?i?in?range(5):print(i) else:print("結束")0 1 2 3 4 結束

也就是說:for語句結束了依然會執行else的語句

for?i?in?[]:print(i)else:print("結束")結束

下面的例子中,當i除以3的余數是2的時候回跳出并終止整個for循環,后面的else就不會執行了

for?i?in?range(10):print(i)if?i?%?3?==?2:break else:print("結束")0 1 2

10、實現三角陣列

for?i?in?range(1,11):for?k?in?range(1,i):print(k,?end="?")print("\n")1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9

如果我們想要倒過來,該如何實現呢?

for?i?in?range(10,0,-1):for?k?in?range(1,i):print(k,?end="?")print("\n")1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1

11、99乘法表

下面舉個例子來說明如何實現99乘法表,如何玩轉99乘法表參考以前的文章

直到今天,我終于學會99乘法表啦~

for?i?in?range(1,10):for?j?in?range(1,i+1):??#?為了保證有4*4,也就是同個數字相乘的等式,需要讓i出現,使用i+1print('{}x{}={}'.format(j,?i,?i*j),?end="?")??#?end的結束符號用空格print("\n")

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件

本站qq群851320808,加入微信群請掃碼:

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的【Python】Python中的for循环,没你想的那么简单~的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。