Python中的循環(huán):遍歷列表、元組、字典和字符串
什么是循環(huán)
在編程中,循環(huán)意味著以相同的順序多次重復(fù)同一組計(jì)算。
想想現(xiàn)實(shí)生活中的情況。你是一位在森林里測(cè)量樹(shù)木的野外生物學(xué)家。你選一棵樹(shù),測(cè)量它的直徑和高度,把它們寫(xiě)在你的筆記本上,估計(jì)它的總體積。接下來(lái),你再選一棵樹(shù),測(cè)量它的直徑和高度,把它們寫(xiě)在你的筆記本上,估計(jì)它的總體積。然后,你再選一棵樹(shù),測(cè)量它的直徑和高度,把它們寫(xiě)在你的筆記本上,估計(jì)它的總體積。
您將不斷重復(fù)相同的過(guò)程,直到示例中的所有樹(shù)都用完為止。在編程行話中,您將遍歷每棵樹(shù),并以相同的順序執(zhí)行相同的任務(wù)集。
回到編程,如果給您一個(gè)整數(shù)值列表,并要求對(duì)每個(gè)項(xiàng)進(jìn)行平方,然后再加5,最后報(bào)告結(jié)果——這就是一個(gè)循環(huán)的例子。
我們可以循環(huán)什么?
那么我們可以循環(huán)什么呢?基本上,任何可迭代的數(shù)據(jù)類型都可以使用循環(huán)進(jìn)行操作。Python中的可迭代對(duì)象是以不同數(shù)據(jù)格式存儲(chǔ)的值序列,例如:
- 列表(例如。[15]10、12、13日)
- 元組(例如(10,12,13,15))
- 字典(例如{' Name ': ' Alan ', ' Age ': 25})
- 字符串(例如' Data Science ')
循環(huán)都有那些類型?
主要有兩種循環(huán):for循環(huán)和while循環(huán)。其中,for循環(huán)是應(yīng)用于數(shù)據(jù)科學(xué)問(wèn)題中最常見(jiàn)的一種循環(huán)。關(guān)鍵的區(qū)別是:
- for循環(huán)對(duì)iterable對(duì)象中的每個(gè)元素進(jìn)行有限次數(shù)的迭代
- while循環(huán)一直進(jìn)行,直到滿足某個(gè)條件
遍歷列表
遍歷一個(gè)列表非常簡(jiǎn)單。給一個(gè)值列表,并要求對(duì)每個(gè)項(xiàng)做一些事情。假設(shè)你有:
- my_list = [1,2,3,4]
然后要求你計(jì)算列表中每個(gè)值的平方:
- for each_value in my_list:
- print(each_value * each_value)Out:
- 1
- 4
- 9
- 16
類似地,你可以做一些更復(fù)雜的循環(huán)(例如'嵌套循環(huán)')。例如,給你兩個(gè)列表并要求:
(i)將一個(gè)列表的值與另一個(gè)列表相乘
(ii)將它們追加到一個(gè)空列表中
(iii)打印出新的列表。
- new_list = []list1 = [2, 3, 4]
- list2 = [4, 5, 6]for i in list1:
- for j in list2:
- new_list.append(i*j)
- print(new_list)Out:
- [8, 10, 12, 12, 15, 18, 16, 20, 24]
遍歷元組
遍歷元組可能會(huì)有點(diǎn)復(fù)雜,這取決于元組的結(jié)構(gòu)和要完成的任務(wù)。
讓我們?cè)谝粋€(gè)列表中存儲(chǔ)一些元組,每個(gè)元組代表一個(gè)類中學(xué)生的姓名和年齡:
- students = [('Allie', 22), ('Monty', 18), ('Rebecca', 19)]
現(xiàn)在的任務(wù)是:
(i)提取所有的年齡
(ii)將它們存儲(chǔ)在一個(gè)列表中
(iii)計(jì)算平均年齡
- ages = []for i,j in students:
- ages.append(j)
- avg = sum(ages)/len(ages)
- print(avg)
- Out:
- 19.666666666666668
這里的每個(gè)元組都包含兩個(gè)條目(姓名和年齡)。即使您對(duì)名稱不感興趣,通過(guò)i和j,您將指定這兩個(gè)項(xiàng)目,并要求將項(xiàng)目j (age)追加到一個(gè)新的列表中。它被稱為“元組拆包”。
遍歷字典
Python中的字典是鍵-值對(duì)的集合:字典中的每一項(xiàng)都有一個(gè)鍵和一個(gè)相關(guān)聯(lián)的值。一個(gè)字典的例子:
- # fruit price dictionary
- fruit_prices = {"apple": 2.50, "orange": 4.99, "banana": 0.59}
您可以循環(huán)遍歷這些dictionary元素并執(zhí)行各種操作。下面是一些例子:
提取字典中的所有鍵值:
- for i in fruit_prices.keys():
- print(i)
- Out:
- apple
- orange
- banana
將所有的值存儲(chǔ)在一個(gè)列表中:
- values = []
- for i in fruit_prices.values():
- values.append(i)
- print(values)
- Out:
- [2.5, 4.99, 0.59]
遍歷字符串
讓我們考慮字符串- " Hello "。它看起來(lái)像一個(gè)可迭代對(duì)象嗎?事實(shí)上,它是。
- for i in 'Hello':
- print(i)
- Out:
- H
- e
- l
- l
- o
可以使用for循環(huán)解包字符串中的每個(gè)字符,并對(duì)它們執(zhí)行各種操作。
同樣,也可以遍歷句子中的每個(gè)單詞。但是在這種情況下,需要一個(gè)額外的步驟來(lái)分割句子。
- sent = 'the sky is blue'
- # splitting the sentence into words
- sent_split = sent.split()
- # extract each word with a loop
- for i in sent_split:
- print(i)
- Out:
- the
- sky
- is
- blue
While循環(huán)
與for循環(huán)類似,while循環(huán)重復(fù)執(zhí)行一個(gè)代碼塊——只要條件為真。只有當(dāng)循環(huán)條件為false時(shí),循環(huán)才會(huì)中止。
while循環(huán)的一般結(jié)構(gòu)是這樣的:
- i = 0while i <=5:
- print(i)
- i = i+1
- # option to break out of the loop
- Out:
- 0
- 1
- 2
- 3
- 4
- 5
在上面的每一次迭代中,i的值都被輸出到5。在此之后,while循環(huán)條件變?yōu)閒alse(即i = 6時(shí),i≤5變?yōu)閒alse)。
- user_id = 'user101'
- while True:
- user = input('Enter your user ID: ')
- if user == user_id:
- print("You have entered ", user)
- break
- else:
- print("Enter a valid user ID ")
循環(huán)控制:continue, break, pass
有三種所謂的循環(huán)控制關(guān)鍵字:continue, break, pass。這些語(yǔ)句改變循環(huán)流,并允許程序在觸發(fā)特定外部條件時(shí)退出或跳過(guò)部分循環(huán)。
Break
如果在循環(huán)中存在break語(yǔ)句,則在滿足條件時(shí)終止循環(huán)。
- string = 'hello, there'
- for i in string:
- if i == ',':
- break
- print(i)
- Out:
- h
- e
- l
- l
- o
在上面的代碼片段中,我們要求程序在找到字符串中的逗號(hào)并執(zhí)行下一條語(yǔ)句(打印i)
continue
continue語(yǔ)句簡(jiǎn)單地跳過(guò)一個(gè)迭代并繼續(xù)到下一個(gè)迭代,而不是跳出循環(huán)。
讓我們執(zhí)行上面相同的代碼,但是使用continue關(guān)鍵字。
- string = 'hello, there'
- for i in string:
- if i == ',':
- continue
- print(i)Out:
- h
- e
- l
- l
- o
- t
- h
- e
- r
- e
在這種情況下,如果循環(huán)遇到了逗號(hào)循環(huán)會(huì)繼續(xù)跳過(guò)逗號(hào)。
Pass
pass不做任何事情,它只是一個(gè)還沒(méi)有寫(xiě)的語(yǔ)句的占位符。
- string = 'hello, there'
- for i in string:
- pass
如果我們沒(méi)有在那里放入一個(gè)pass,它將拋出一個(gè)錯(cuò)誤消息,其余的代碼將不會(huì)執(zhí)行。
總結(jié)
本文的目的是直觀地了解Python中的for循環(huán)和while循環(huán)。給出了如何循環(huán)遍歷可迭代對(duì)象的例子,如列表、元組、字典和字符串。在文章的最后,我們通過(guò)示例介紹了循環(huán)控制語(yǔ)句的概念——break、continue和pass。
本文旨在對(duì)循環(huán)的工作方式進(jìn)行初步概述。