溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在Python中實現(xiàn)for循環(huán)

發(fā)布時間:2021-04-01 16:26:38 來源:億速云 閱讀:147 作者:Leah 欄目:開發(fā)技術(shù)

如何在Python中實現(xiàn)for循環(huán)?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

for 循環(huán)的語法格式如下:

for 迭代變量 in 字符串|列表|元組|字典|集合:
代碼塊

格式中,迭代變量用于存放從序列類型變量中讀取出來的元素,所以一般不會在循環(huán)中對迭代變量手動賦值;代碼塊指的是具有相同縮進格式的多行代碼(和 while 一樣),由于和循環(huán)結(jié)構(gòu)聯(lián)用,因此代碼塊又稱為循環(huán)體。

for 循環(huán)語句的執(zhí)行流程如圖 1 所示。

如何在Python中實現(xiàn)for循環(huán)

圖 1 for 循環(huán)語句的執(zhí)行流程圖

例如:

name = '張三'
#變量name,逐個輸出各個字符
for ch in name:
  print(ch)

運行結(jié)果為:


可以看到,使用 for 循環(huán)遍歷 “張三” 字符串的過程中,迭代變量 ch 先后被賦值為‘張'和‘三',并代入循環(huán)體中運行,只不過例子中的循環(huán)體比較簡單,只有一行輸出代碼。

for 進行數(shù)值循環(huán)

在使用 for 循環(huán)時,最基本的應(yīng)用就是進行數(shù)值循環(huán)。比如說,想要實現(xiàn)從 1 到 100 的累加,可以執(zhí)行如下代碼:

print("計算 1+2+...+100 的結(jié)果為:")
#保存累加結(jié)果的變量
result = 0
#逐個獲取從 1 到 100 這些值,并做累加操作
for i in range(101):
  result += i
print(result)

運行結(jié)果為:

計算 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ù)的含義如下:

  1. start:用于指定計數(shù)的起始值,如果省略不寫,則默認從 0 開始。

  2. end:用于指定計數(shù)的結(jié)束值(不包括此值),此參數(shù)不能省略。

  3. step:用于指定步長,即兩個數(shù)之間的間隔,如果省略,則默認步長為 1。

總之,在使用 range() 函數(shù)時,如果只有一個參數(shù),則表示指定的是 end;如果有兩個參數(shù),則表示指定的是 start 和 end。

大家也可以根據(jù)需要寫代碼測試一下。

例如:

print("輸出10 以內(nèi)的所有奇數(shù):")
for i in range(1,10,2):
 print(i,end=' ')

運行結(jié)果為:

輸出10 以內(nèi)的所有奇數(shù):
1 3 5 7 9

在 Python 2.x 中,除提供 range() 函數(shù)外,還提供了一個 xrange() 函數(shù),它可以解決 range() 函數(shù)不經(jīng)意間耗掉所有可用內(nèi)存的問題。但在 Python 3.x 中,已經(jīng)將 xrange() 更名為 range() 函數(shù),并刪除了老的 xrange() 函數(shù)。

for 循環(huán)遍歷列表和元組

在使用 for 循環(huán)遍歷列表和元組時,列表或元組有幾個元素,for 循環(huán)的循環(huán)體就執(zhí)行幾次,針對每個元素執(zhí)行一次,迭代變量會依次被賦值為元素的值。

如下代碼使用 for 循環(huán)遍歷元組:

a_tuple = ('crazyit', 'fkit', 'Charlie')
for ele in a_tuple:
  print('當(dāng)前元素是:', ele)

運行結(jié)果為:

當(dāng)前元素是: crazyit
當(dāng)前元素是: fkit
當(dāng)前元素是: Charlie

當(dāng)然,也可按上面方法來遍歷列表。例如,下面程序要計算列表中所有數(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ù)或浮點數(shù)
  if isinstance(ele, int) or isinstance(ele, float):
    print(ele)
    # 累加該元素
    my_sum += ele
    # 數(shù)值元素的個數(shù)加1
    my_count += 1
print('總和:', my_sum)
print('平均數(shù):', my_sum / my_count)

運行結(jié)果為:

12
45
3.4
13
4
56
109.5
總和: 242.9
平均數(shù): 34.7

上面程序使用 for 循環(huán)遍歷列表的元素,并對幾何元素進行判斷:只有當(dāng)列表元素是數(shù)值(int、float)時,程序才會累加它們,這樣就可以計算出列表中數(shù)值元素的總和。

不僅如此,程序中還使用了 Python 的 isinstance() 函數(shù),該函數(shù)用于判斷某個變量是否為指定類型的實例,其中前一個參數(shù)是要判斷的變量,后一個參數(shù)是類型。我們可以在 Python 的交互式解釋器中測試該函數(shù)的功能,例如如下運行過程:

>>> isinstance(2,int)
True
>>> isinstance('a',int)
False
>>> isinstance('a',str)
True

從上面的運行過程可以看出,使用 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個元素是 %s" % (i , a_list[i]))

運行結(jié)果為:

第0個元素是 330
第1個元素是 1.4
第2個元素是 50
第3個元素是 fkit
第4個元素是 -3.5

for 循環(huán)遍歷字典

使用 for 循環(huán)遍歷字典其實也是通過遍歷普通列表來實現(xiàn)的。前面在介紹字典時己經(jīng)提到,字典包含了如下三個方法:

  1. items():返回字典中所有 key-value 對的列表。

  2. keys():返回字典中所有 key 的列表。

  3. values():返回字典中所有 value 的列表。

因此,如果要遍歷字典,完全可以先調(diào)用字典的上面三個方法之一來獲取字典的所有 key-value 對、所有 key、所有 value,再進行遍歷。如下程序示范了使用 for 循環(huán)來遍歷字典:

my_dict = {'語文': 89, '數(shù)學(xué)': 92, '英語': 80}
# 通過items()方法遍歷所有key-value對
# 由于items方法返回的列表元素是key-value對,因此要聲明兩個變量
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)

運行結(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

上面程序通過三個 for 循環(huán)分別遍歷了字典的所有 key-value 對、所有 key、所有 value。尤其是通過字典的 items() 遍歷所有的 key-value 對時,由于 items() 方法返回的是字典中所有 key-value 對組成的列表,列表元素都是長度為 2 的元組,因此程序要聲明兩個變量來分別代表 key、value(這也是序列解包的應(yīng)用)。

假如需要實現(xiàn)一個程序,用于統(tǒng)計列表中各元素出現(xiàn)的次數(shù)。由于我們并不清楚列表中包含多少個元素,因此考慮定義一個字典,以列表的元素為 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))

運行結(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)字符—將“我是個大好人!我愛我的家”反轉(zhuǎn)“家的我愛我!人好大個是我”
yuanJu = "我是個大好人!我愛我的家"
result = ""
# 第一步,先拆字
for x in yuanJu:
# 用遍歷出的結(jié)果與空字符串相加
  result = x + result
print(result)

二、打印 1—100之間的偶數(shù)

# 打印 1—100之間的偶數(shù)
# 首先創(chuàng)建一個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ù)")

因為上面的偶數(shù)需要包括100,所以range(1,101).

關(guān)于如何在Python中實現(xiàn)for循環(huán)問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI