自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

六個(gè)實(shí)例,八段代碼,詳解Python中的for循環(huán)

開(kāi)發(fā) 后端
Python 支持for循環(huán),它的語(yǔ)法與其他語(yǔ)言(如JavaScript 或Java)稍有不同。下面的代碼塊演示如何在Python 中使用for循環(huán)來(lái)遍歷列表中的元素。

 

Python 支持for循環(huán),它的語(yǔ)法與其他語(yǔ)言(如JavaScript 或Java)稍有不同。下面的代碼塊演示如何在Python 中使用for循環(huán)來(lái)遍歷列表中的元素:

上述的代碼段是將三個(gè)字母分行打印的。你可以通過(guò)在print語(yǔ)句的后面添加逗號(hào)“,”將輸出限制在同一行顯示(如果指定打印的字符很多,則會(huì)“換行”),代碼如下所示:

當(dāng)你希望通過(guò)一行而不是多行顯示文本中的內(nèi)容時(shí),可以使用上述形式的代碼。Python 還提供了內(nèi)置函數(shù)reversed(),它可以反轉(zhuǎn)循環(huán)的方向,例如:

注意,只有當(dāng)對(duì)象的大小是確定的,或者對(duì)象實(shí)現(xiàn)了_reversed_()方法的時(shí)候反向遍歷的功能才有效。

01 使用tryexcept的for循環(huán)

清單1 的StringToNums.py說(shuō)明了如何對(duì)一組從字符串轉(zhuǎn)換而來(lái)的整數(shù)求和。

  •  清單1 StringToNums.py 
  1. line = '1 2 3 4 10e abc'  
  2. sum  = 0  
  3. invalidStr = ""  
  4. print('String of numbers:',line)  
  5. for str in line.split(" "):  
  6.   try: 
  7.     sumsum = sum + eval(str)  
  8.   except:  
  9.     invalidStrinvalidStr = invalidStr + str + ' '  
  10. print('sum:', sum)  
  11. if(invalidStr != ""):  
  12.   print('Invalid strings:',invalidStr) 
  13. else:  
  14.   print('All substrings are valid numbers') 

清單1 首先初始化變量line、sum和invalidStr,然后顯示line的內(nèi)容。接下來(lái)將line中的內(nèi)容分割為單詞,然后通過(guò)try代碼塊逐個(gè)將單詞的數(shù)值累加到變量sum 中。如果發(fā)生異常,則將當(dāng)前str的內(nèi)容追加到變量invalidStr。

當(dāng)循環(huán)執(zhí)行結(jié)束,清單1 打印出數(shù)值單詞的和,并在后面顯示非數(shù)值單詞。它的輸出如下所示:

02 指數(shù)運(yùn)算

清單2 的Nth_exponet.py說(shuō)明了如何計(jì)算一組整數(shù)的冪。

  •  清單2 Nth_exponet.py 
  1. maxPower = 4  
  2. maxCount = 4  
  3. def pwr(num):  
  4.   prod = 1  
  5.   for n in range(1,maxPower+1):  
  6.     prodprod = prod*num  
  7.     print(num,'to the power',n, 'equals',prod)  
  8.   print('-----------')  
  9. for num in range(1,maxCount+1):  
  10.     pwr(num) 

清單2 中有一個(gè)pwr()函數(shù),其參數(shù)為一個(gè)數(shù)值。此函數(shù)中的循環(huán)可打印出參數(shù)的1 到n次方,n的取值范圍在1到maxCount+1之間。

代碼的第二部分通過(guò)一個(gè)for循環(huán)調(diào)用pwr()函數(shù)從1到maxCount+1的值。它的輸出如下所示:

03 嵌套的循環(huán)

清單3 的Triangular1.py說(shuō)明了如何打印一行連續(xù)整數(shù)(從1開(kāi)始),其中每一行的長(zhǎng)度都比前一行大1。

  •   清單3 Triangular1.py 
  1. max = 8  
  2. for x in range(1,max+1):  
  3.   for y in range(1,x+1):  
  4.     print(y,'', end='' 
  5.   print()  

清單3 首先初始化max變量為8,之后通過(guò)變量x從1到max+1執(zhí)行循環(huán)。內(nèi)層循環(huán)有一個(gè)值為從1到x+1的循環(huán)變量y,并打印y的值。它的輸出如下所示:

04 在for循環(huán)中使用split()函數(shù)

Python 支持各種便捷的字符串操作相關(guān)函數(shù),包括split()函數(shù)和join()函數(shù)。在需要將一行文本分詞化(即“分割”)為單詞,然后使用for循環(huán)遍歷這些單詞時(shí),split()函數(shù)非常有用。

join()函數(shù)與split()函數(shù)相反,它將兩個(gè)或多個(gè)單詞“連接”為一行。通過(guò)使用split()函數(shù),你可以輕松地刪除句子中多余的空格,然后調(diào)用join()函數(shù),使文本行中每個(gè)單詞之間只有一個(gè)空格。

1. 使用split()函數(shù)做單詞比較

清單4 的Compare2.py說(shuō)明了如何通過(guò)split()函數(shù)將文本字符串中的每個(gè)單詞與另一個(gè)單詞進(jìn)行比較。

  •  清單4 Compare2.py 
  1. x = 'This is a string that contains abc and Abc'  
  2. y = 'abc'  
  3. identical = 0  
  4. casematch = 0  
  5. for w in x.split():  
  6.   if(w == y):  
  7.     identicalidentical = identical + 1  
  8.   elif (w.lower() == y.lower()):  
  9.     casematchcasematch = casematch + 1  
  10. if(identical > 0):  
  11.  print('found identical matches:', identical)  
  12. if(casematch > 0):  
  13.  print('found case matches:', casematch)  
  14. if(casematch == 0 and identical == 0):  
  15.  print('no matches found') 

清單4 通過(guò)split()函數(shù)對(duì)字符串x中的每個(gè)單詞與單詞abc進(jìn)行比較。如果單詞精確匹配,就將identical變量加1 ;否則就嘗試不區(qū)分大小寫(xiě)進(jìn)行比較,若匹配就將casematch變量加1。

清單4 的輸出如下所示:

2. 使用split()函數(shù)打印指定格式的文本

清單5 的FixedColumnCount1.py 說(shuō)明了如何打印一組設(shè)定固定寬度的字符串。

  •  清單5 FixedColumnCount1.py 
  1. import string  
  2. wordCount = 0  
  3. str1 = 'this is a string with a set of words in it'  
  4. print('Left-justified strings:')  
  5. print('-----------------------')  
  6. for w in str1.split():  
  7.    print('%-10s' % w)  
  8.    wordCountwordCount = wordCount + 1  
  9.    if(wordCount % 2 == 0):  
  10.       print("")  
  11. print("\n")  
  12. print('Right-justified strings:')   
  13. print('------------------------')   
  14. wordCount = 0  
  15. for w in str1.split():  
  16.    print('%10s' % w)  
  17.    wordCountwordCount = wordCount + 1  
  18.    if(wordCount % 2 == 0):  
  19.       print() 

清單5 首先初始化變量wordCount和str1,然后執(zhí)行兩個(gè)for循環(huán)。第一個(gè)for 循環(huán)對(duì)str1的每個(gè)單詞進(jìn)行左對(duì)齊打印,第二個(gè)for循環(huán)對(duì)str1的每個(gè)單詞進(jìn)行右對(duì)齊打印。在每個(gè)循環(huán)中當(dāng)wordCount是偶數(shù)的時(shí)候就輸出一次換行,這樣每打印兩個(gè)連續(xù)的單詞之后就換行。清單5 的輸出如下所示:

3. 使用split()函數(shù)打印固定寬度的文本

清單6 的FixedColumnWidth1.py說(shuō)明了如何打印固定寬度的文本。

  •  清單6 FixedColumnWidth1.py 
  1. import string  
  2. left = 0  
  3. right = 0  
  4. columnWidth = 8  
  5. str1 = 'this is a string with a set of words in it and it will be split into a fixed column width'  
  6. strLen = len(str1)  
  7. print('Left-justified column:')   
  8. print('----------------------')   
  9. rowCount = int(strLen/columnWidth)  
  10. for i in range(0,rowCount):  
  11.    left  = i*columnWidth  
  12.    right = (i+1)*columnWidth-1  
  13.    word  = str1[left:right]  
  14.    print("%-10s" % word)  
  15. # check for a 'partial row'  
  16. if(rowCount*columnWidth < strLen):  
  17.    left  = rowCount*columnWidth-1;  
  18.    right = strLen  
  19.    word  = str1[left:right]  
  20.    print("%-10s" % word) 

清單6 初始化整型變量columnWidth和字符串類型變量str1。變量strLen是str1的長(zhǎng)度,變量rowCount是strLen除以columnWidth的值。之后通過(guò)循環(huán)打印rowCount行,每行包含columnWidth個(gè)字符。代碼的最后部分輸出所有“剩余”的字符。清單6 的輸出如下所示:

4. 使用split()函數(shù)比較文本字符串

清單7 的CompareStrings1.py說(shuō)明了如何判斷一個(gè)文本字符串中的單詞是否出現(xiàn)在另一個(gè)文本字符串中。

  • 清單7 CompareStrings1.py 
  1. text1 = 'a b c d'  
  2. text2 = 'a b c e d'  
  3. if(text2.find(text1) >= 0):  
  4.   print('text1 is a substring of text2') 
  5. else:  
  6.   print('text1 is not a substring of text2')  
  7. subStr = True 
  8. for w in text1.split():  
  9.   if(text2.find(w) == -1):  
  10.     subStr = False  
  11.     break  
  12. if(subStr == True):  
  13.   print('Every word in text1 is a word in text2')  
  14. else:  
  15.   print('Not every word in text1 is a word in text2') 

清單7 首先初始化兩個(gè)字符串變量text1和text2,然后通過(guò)條件邏輯判斷字符串text2是否包含了text1(并輸出相應(yīng)打印信息)。

清單7 的后半部分通過(guò)一個(gè)循環(huán)遍歷字符串text1中的每個(gè)單詞,并判斷其是否出現(xiàn)在text2中。如果發(fā)現(xiàn)有匹配失敗的情況,就設(shè)置變量subStr為False,并通過(guò)break語(yǔ)句跳出循環(huán),提前終止for循環(huán)的執(zhí)行。最后根據(jù)變量subStr的值打印對(duì)應(yīng)的信息。清單7 的輸出如下所示:

05 用基礎(chǔ)的for循環(huán)顯示字符串中的字符

清單8 的StringChars1.py說(shuō)明了如何打印一個(gè)文本字符串中的字符。

  •  清單8 StringChars1.py 
  1. text = 'abcdef'  
  2. for ch in text:  
  3.    print('char:',ch,'ord value:',ord(ch)) 
  4. print 

清單8 的代碼簡(jiǎn)單直接地通過(guò)一個(gè)for循環(huán)遍歷字符串text并打印它的每個(gè)字符以及字符的ord值(ASCII 碼)。清單8 的輸出如下所示:

06 join()函數(shù)

另一個(gè)去掉多余空格的方法是使用join()函數(shù),代碼示例如下所示:

split()函數(shù)將一個(gè)文本字符串“分割”為一系列的單詞,同時(shí)去掉多余的空格。接下來(lái)join()函數(shù)使用一個(gè)空格作為分隔符將字符串text1中的單詞連接在一起。上述代碼的最后部分使用字符串XYZ替換空格作為分隔符,執(zhí)行相同的連接操作。上述代碼的輸出如下:

關(guān)于作者:奧斯瓦爾德·坎佩薩托(Oswald Campesato),專門(mén)研究深度學(xué)習(xí)、Java、Android和TensorFlow。他是25本書(shū)的作者/合著者。

 

本文摘編自《機(jī)器學(xué)習(xí)入門(mén):Python語(yǔ)言實(shí)現(xiàn)》,經(jīng)出版方授權(quán)發(fā)布。(ISBN:9787111695240) 

 

責(zé)任編輯:龐桂玉 來(lái)源: 大數(shù)據(jù)DT
相關(guān)推薦

2022-01-16 08:00:28

PythonFor循環(huán)

2017-03-06 15:15:57

Linuxfile實(shí)例

2021-10-27 10:15:25

Python新特性編程語(yǔ)言

2023-05-22 15:53:06

JavaScrip代碼素材

2022-05-13 09:55:19

Python內(nèi)置函數(shù)

2019-10-08 11:48:20

PythonGitHub程序員

2024-01-16 15:19:29

Python內(nèi)存

2013-11-01 09:51:39

2010-05-04 08:58:02

.NET

2022-11-25 12:25:27

Python代碼編輯器

2023-10-19 11:53:53

2022-10-20 07:57:32

高層模塊設(shè)計(jì)代碼

2024-10-11 10:00:00

Python庫(kù)編程

2017-05-03 10:45:47

Python運(yùn)行效率竅門(mén)

2022-03-26 09:32:54

Python編程映射

2024-05-10 09:28:57

Python面向?qū)ο?/a>代碼

2024-04-15 12:27:00

await面試接口

2025-04-11 11:55:49

2022-04-04 21:33:48

進(jìn)度條Python

2022-11-15 16:54:54

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)