Python for循環(huán)及基礎(chǔ)用法詳解
Python 中的循環(huán)語句有 2 種,分別是 while 循環(huán)和 for 循環(huán),前面章節(jié)已經(jīng)對 while 做了詳細(xì)的講解,本節(jié)給大家介紹 for 循環(huán),它常用于遍歷字符串、列表、元組、字典、集合等序列類型,逐個(gè)獲取序列中的各個(gè)元素。
for 循環(huán)的語法格式如下:
for 迭代變量 in 字符串|列表|元組|字典|集合:
代碼塊
格式中,迭代變量用于存放從序列類型變量中讀取出來的元素,所以一般不會(huì)在循環(huán)中對迭代變量手動(dòng)賦值;代碼塊指的是具有相同縮進(jìn)格式的多行代碼(和 while 一樣),由于和循環(huán)結(jié)構(gòu)聯(lián)用,因此代碼塊又稱為循環(huán)體。
for 循環(huán)語句的執(zhí)行流程如圖 1 所示。
圖 1 for 循環(huán)語句的執(zhí)行流程圖
例如:
name = '張三' #變量name,逐個(gè)輸出各個(gè)字符 for ch in name: print(ch)
運(yùn)行結(jié)果為:
張
三
可以看到,使用 for 循環(huán)遍歷 “張三” 字符串的過程中,迭代變量 ch 先后被賦值為‘張'和‘三',并代入循環(huán)體中運(yùn)行,只不過例子中的循環(huán)體比較簡單,只有一行輸出代碼。
for 進(jìn)行數(shù)值循環(huán)
在使用 for 循環(huán)時(shí),最基本的應(yīng)用就是進(jìn)行數(shù)值循環(huán)。比如說,想要實(shí)現(xiàn)從 1 到 100 的累加,可以執(zhí)行如下代碼:
print("計(jì)算 1+2+...+100 的結(jié)果為:") #保存累加結(jié)果的變量 result = 0 #逐個(gè)獲取從 1 到 100 這些值,并做累加操作 for i in range(101): result += i print(result)
運(yùn)行結(jié)果為:
計(jì)算 1+2+...+100 的結(jié)果為:
5050
上面代碼中,使用了 range() 函數(shù),此函數(shù)是 Python 內(nèi)置的函數(shù),用于生成一系列連續(xù)的整數(shù),多用于 for 循環(huán)中。
range() 函數(shù)的語法格式如下:
range(start,end,step)
此函數(shù)中各參數(shù)的含義如下:
- start:用于指定計(jì)數(shù)的起始值,如果省略不寫,則默認(rèn)從 0 開始。
- end:用于指定計(jì)數(shù)的結(jié)束值(不包括此值),此參數(shù)不能省略。
- step:用于指定步長,即兩個(gè)數(shù)之間的間隔,如果省略,則默認(rèn)步長為 1。
總之,在使用 range() 函數(shù)時(shí),如果只有一個(gè)參數(shù),則表示指定的是 end;如果有兩個(gè)參數(shù),則表示指定的是 start 和 end。
大家也可以根據(jù)需要寫代碼測試一下。
例如:
print("輸出10 以內(nèi)的所有奇數(shù):") for i in range(1,10,2): print(i,end=' ')
運(yùn)行結(jié)果為:
輸出10 以內(nèi)的所有奇數(shù):
1 3 5 7 9
在 Python 2.x 中,除提供 range() 函數(shù)外,還提供了一個(gè) xrange() 函數(shù),它可以解決 range() 函數(shù)不經(jīng)意間耗掉所有可用內(nèi)存的問題。但在 Python 3.x 中,已經(jīng)將 xrange() 更名為 range() 函數(shù),并刪除了老的 xrange() 函數(shù)。
for 循環(huán)遍歷列表和元組
在使用 for 循環(huán)遍歷列表和元組時(shí),列表或元組有幾個(gè)元素,for 循環(huán)的循環(huán)體就執(zhí)行幾次,針對每個(gè)元素執(zhí)行一次,迭代變量會(huì)依次被賦值為元素的值。
如下代碼使用 for 循環(huán)遍歷元組:
a_tuple = ('crazyit', 'fkit', 'Charlie') for ele in a_tuple: print('當(dāng)前元素是:', ele)
運(yùn)行結(jié)果為:
當(dāng)前元素是: crazyit
當(dāng)前元素是: fkit
當(dāng)前元素是: Charlie
當(dāng)然,也可按上面方法來遍歷列表。例如,下面程序要計(jì)算列表中所有數(shù)值元素的總和、平均值:
src_list = [12, 45, 3.4, 13, 'a', 4, 56, 'crazyit', 109.5] my_sum = 0 my_count = 0 for ele in src_list: # 如果該元素是整數(shù)或浮點(diǎn)數(shù) if isinstance(ele, int) or isinstance(ele, float): print(ele) # 累加該元素 my_sum += ele # 數(shù)值元素的個(gè)數(shù)加1 my_count += 1 print('總和:', my_sum) print('平均數(shù):', my_sum / my_count)
運(yùn)行結(jié)果為:
12
45
3.4
13
4
56
109.5
總和: 242.9
平均數(shù): 34.7
上面程序使用 for 循環(huán)遍歷列表的元素,并對幾何元素進(jìn)行判斷:只有當(dāng)列表元素是數(shù)值(int、float)時(shí),程序才會(huì)累加它們,這樣就可以計(jì)算出列表中數(shù)值元素的總和。
不僅如此,程序中還使用了 Python 的 isinstance() 函數(shù),該函數(shù)用于判斷某個(gè)變量是否為指定類型的實(shí)例,其中前一個(gè)參數(shù)是要判斷的變量,后一個(gè)參數(shù)是類型。我們可以在 Python 的交互式解釋器中測試該函數(shù)的功能,例如如下運(yùn)行過程:
>>> isinstance(2,int)
True
>>> isinstance('a',int)
False
>>> isinstance('a',str)
True
從上面的運(yùn)行過程可以看出,使用 isinstance() 函數(shù)判斷變量是否為指定類型非常方便、有效。
如果需要,for 循環(huán)也可根據(jù)索引來遍歷列表或元組,即只要讓迭代變量取 0 到列表長度的區(qū)間,就可通過該迭代變量訪問列表元素。例如如下程序:
a_list = [330, 1.4, 50, 'fkit', -3.5] # 遍歷0到len(a_list)的范圍 for i in range(0, len(a_list)) : # 根據(jù)索引訪問列表元素 print("第%d個(gè)元素是 %s" % (i , a_list[i]))
運(yùn)行結(jié)果為:
第0個(gè)元素是 330
第1個(gè)元素是 1.4
第2個(gè)元素是 50
第3個(gè)元素是 fkit
第4個(gè)元素是 -3.5
for 循環(huán)遍歷字典
使用 for 循環(huán)遍歷字典其實(shí)也是通過遍歷普通列表來實(shí)現(xiàn)的。前面在介紹字典時(shí)己經(jīng)提到,字典包含了如下三個(gè)方法:
- items():返回字典中所有 key-value 對的列表。
- keys():返回字典中所有 key 的列表。
- values():返回字典中所有 value 的列表。
因此,如果要遍歷字典,完全可以先調(diào)用字典的上面三個(gè)方法之一來獲取字典的所有 key-value 對、所有 key、所有 value,再進(jìn)行遍歷。如下程序示范了使用 for 循環(huán)來遍歷字典:
my_dict = {'語文': 89, '數(shù)學(xué)': 92, '英語': 80} # 通過items()方法遍歷所有key-value對 # 由于items方法返回的列表元素是key-value對,因此要聲明兩個(gè)變量 for key, value in my_dict.items(): print('key:', key) print('value:', value) print('-------------') # 通過keys()方法遍歷所有key for key in my_dict.keys(): print('key:', key) # 在通過key獲取value print('value:', my_dict[key]) print('-------------') # 通過values()方法遍歷所有value for value in my_dict.values(): print('value:', value)
運(yùn)行結(jié)果為:
key: 語文
value: 89
key: 數(shù)學(xué)
value: 92
key: 英語
value: 80
-------------
key: 語文
value: 89
key: 數(shù)學(xué)
value: 92
key: 英語
value: 80
-------------
value: 89
value: 92
value: 80
上面程序通過三個(gè) for 循環(huán)分別遍歷了字典的所有 key-value 對、所有 key、所有 value。尤其是通過字典的 items() 遍歷所有的 key-value 對時(shí),由于 items() 方法返回的是字典中所有 key-value 對組成的列表,列表元素都是長度為 2 的元組,因此程序要聲明兩個(gè)變量來分別代表 key、value(這也是序列解包的應(yīng)用)。
假如需要實(shí)現(xiàn)一個(gè)程序,用于統(tǒng)計(jì)列表中各元素出現(xiàn)的次數(shù)。由于我們并不清楚列表中包含多少個(gè)元素,因此考慮定義一個(gè)字典,以列表的元素為 key,該元素出現(xiàn)的次數(shù)為 value。程序如下:
src_list = [12, 45, 3.4, 12, 'fkit', 45, 3.4, 'fkit', 45, 3.4] statistics = {} for ele in src_list: # 如果字典中包含ele代表的key if ele in statistics: # 將ele元素代表出現(xiàn)次數(shù)加1 statistics[ele] += 1 # 如果字典中不包含ele代表的key,說明該元素還未出現(xiàn)過 else: # 將ele元素代表出現(xiàn)次數(shù)設(shè)為1 statistics[ele] = 1 # 遍歷dict,打印出各元素的出現(xiàn)次數(shù) for ele, count in statistics.items(): print("%s的出現(xiàn)次數(shù)為:%d" % (ele, count))
運(yùn)行結(jié)果為:
12的出現(xiàn)次數(shù)為:2
45的出現(xiàn)次數(shù)為:3
3.4的出現(xiàn)次數(shù)為:3
fkit的出現(xiàn)次數(shù)為:2
python循環(huán)-for循環(huán)綜合小案例
一、字符串的反轉(zhuǎn)
# 翻轉(zhuǎn)字符—將“我是個(gè)大好人!我愛我的家”反轉(zhuǎn)“家的我愛我!人好大個(gè)是我” yuanJu = "我是個(gè)大好人!我愛我的家" result = "" # 第一步,先拆字 for x in yuanJu: # 用遍歷出的結(jié)果與空字符串相加 result = x + result print(result)
二、打印 1—100之間的偶數(shù)
# 打印 1—100之間的偶數(shù) # 首先創(chuàng)建一個(gè)1—100的集合,利用range函數(shù),生成的半開半閉的區(qū)間,所以最后得+1。 num = range(1, 101) for n in num: if n % 2 == 0: print(n) else: print("以上數(shù)字為1-100之內(nèi)的偶數(shù)")
因?yàn)樯厦娴呐紨?shù)需要包括100,所以range(1,101).
好了這篇關(guān)于python for循環(huán)的文章就介紹到這了,這也是腳本之家小編迄今為止比較完整的介紹了,希望能幫助到大家。
相關(guān)文章
Python3.4 splinter(模擬填寫表單)使用方法
今天小編就為大家分享一篇Python3.4 splinter(模擬填寫表單)使用方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10ChatGPT教你用Python實(shí)現(xiàn)BinarySearchTree詳解
這篇文章主要為大家介紹了ChatGPT教你用Python實(shí)現(xiàn)BinarySearchTree詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02- Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的Guido van Rossum 于1990 年代初設(shè)計(jì),作為一門叫做ABC語言的替代品。 Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊?/div> 2021-10-10
Pandas常用的數(shù)據(jù)結(jié)構(gòu)和常用的數(shù)據(jù)分析技術(shù)
Pandas是Python中用于數(shù)據(jù)處理和分析的強(qiáng)大庫,其最常用的數(shù)據(jù)結(jié)構(gòu)是Series和DataFrame。Series類似于一維數(shù)組,可以表示一列數(shù)據(jù);DataFrame類似于二維表格,可以表示多列數(shù)據(jù)2023-04-04跟老齊學(xué)Python之玩轉(zhuǎn)字符串(2)
上一篇文章章中已經(jīng)講到連接兩個(gè)字符串的一種方法,本文繼續(xù)講訴連接字符串的方法2,字符串復(fù)制,字符串長度,字符大小寫的轉(zhuǎn)換,希望對大家有所幫助。2014-09-09python神經(jīng)網(wǎng)絡(luò)facenet人臉檢測及keras實(shí)現(xiàn)
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)facenet人臉檢測及keras實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05最新評論