欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python學(xué)習(xí)之循環(huán)方法詳解

 更新時(shí)間:2022年03月07日 09:54:22   作者:渴望力量的哈士奇  
循環(huán)是有著周而復(fù)始的運(yùn)動(dòng)或變化的規(guī)律;在 Python 中,循環(huán)的操作也叫做 遍歷。與現(xiàn)實(shí)中一樣,Python 中也同樣存在著無(wú)限循環(huán)的方法與有限循環(huán)的方法。本文將通過(guò)示例詳細(xì)講解Python中的循環(huán)方法,需要的可以參考一下

什么是循環(huán)? —> 循環(huán)是有著周而復(fù)始的運(yùn)動(dòng)或變化的規(guī)律;在 Python 中,循環(huán)的操作也叫做 ‘遍歷’ 。 與現(xiàn)實(shí)中一樣,Python 中也同樣存在著無(wú)限循環(huán)的

方法與有限循環(huán)的方法。接下來(lái)我們就先看看有限循環(huán)的方法 —> for 循環(huán)

for 循環(huán)

for 循環(huán)的功能:通過(guò) for 關(guān)鍵字將列表、元組、字符串、字典中的每個(gè)元素按照序列順序進(jìn)行遍歷(循環(huán)),當(dāng)讀取到最后一個(gè)元素循環(huán)也就結(jié)束了。

for 循環(huán)的用法:示例如下

for item in iterable:		# for循環(huán)語(yǔ)句塊
    print(item)				# 每次循環(huán)對(duì)應(yīng)的代碼塊
    						# 代碼塊所需要的縮進(jìn)
        
# >>> iterable : 可循環(huán)的數(shù)據(jù)類型,如列表、元組、字符串、字典
# >>> item : iterable 中的每一個(gè)成員(元素)
# >>> 返回值 : for循環(huán)是語(yǔ)句,沒(méi)有返回值;但是在一定的特殊情況下,是有返回值的。


books = ['Python不禿頭', 'PHP是最美的語(yǔ)言', 'DBA從入門(mén)到刪庫(kù)', '面向監(jiān)獄的爬蟲(chóng)']

for book in books:
    print(book)

print('finish')

# >>> 執(zhí)行結(jié)果如下:
# >>> Python不禿頭
# >>> PHP是最美的語(yǔ)言
# >>> DBA從入門(mén)到刪庫(kù)
# >>> 面向監(jiān)獄的爬蟲(chóng)
# >>> finish


str_demo = 'Python'
for i in str_demo:
    print(i)
    
# >>> P
# >>> y
# >>> t
# >>> h
# >>> o
# >>> n


users = {'name': 'Neo', 'age': '18'}
for user in users:
    print(user, users[user])

# >>> 執(zhí)行結(jié)果如下:    
# >>> name Neo
# >>> age 18
# >>> 該循環(huán)的每一次遍歷取 kay 的 value 不是很友好,有沒(méi)有更好的方法方便我們?nèi)≈的??繼續(xù)往下看。

字典利用 items 內(nèi)置函數(shù)進(jìn)行 for 循環(huán)

items() 內(nèi)置函數(shù)的功能:將字典轉(zhuǎn)成偽列表,每個(gè) key 、 value 轉(zhuǎn)成元組。

items() 內(nèi)置函數(shù)的用法:示例如下

for key, value in dict.items():
    print(key, value)
    
# >>> items : 無(wú)參數(shù)
# >>> key : for 循環(huán)體中獲取的字典當(dāng)前元素的 key
# >>> value : for循環(huán)體中對(duì)應(yīng)的 key 的 value 的值
# >>> 返回值 : for 循環(huán)是語(yǔ)句,沒(méi)有返回值;items 返回一個(gè)列表


dict_users = {'name': 'Neo', 'age': '18'}
for key, value in dict_users.items():
    print(key, value)
    
# >>> 執(zhí)行結(jié)果如下:    
# >>> name Neo
# >>> age 18


# 如果是一個(gè)列表內(nèi)存在著字典元素呢?
user_list = [{'name': 'Neo'}, {'name': 'Jack'}]

for user in user_list:
    print(user.get('name'))
    print(type(user))
    print(user.get('age'))
    
# >>> 執(zhí)行結(jié)果如下:    
# >>> Neo
# >>> <class 'dict'>
# >>> None		# 因?yàn)?age 并沒(méi)有被定義,所以返回的是 Node
# >>> Jack
# >>> <class 'dict'>
# >>> None

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

range() 內(nèi)置函數(shù)的功能:返回的是一個(gè)一定范圍的可迭代對(duì)象(即可進(jìn)行 for 循環(huán)),元素為整型。它不是列表,無(wú)法打印信息,但是可以循環(huán)。range() 函數(shù)一般幫助我們執(zhí)行一定次數(shù)的循環(huán)而使用,比如設(shè)定循環(huán)5次。

range() 內(nèi)置函數(shù)的用法:示例如下

for item in range(start, stop, step=1):
    print(item)
    
# >>> start : 開(kāi)始的數(shù)字,類似索引的左邊    
# >>> stop : 結(jié)束的數(shù)字,類似索引的右邊
# >>> step : 跳步,類似索引中的第三個(gè)參數(shù)
# >>> 返回值 : 返回一個(gè)可迭代(循環(huán)的)以整型為主的對(duì)象
# >>> 需要注意的是 range() 也是 左含右不含的方式


test_int = range(5)

for item in test_int:
    print(item)
    
# >>> 執(zhí)行結(jié)果如下:
# >>> 0
# >>> 1
# >>> 2
# >>> 3
# >>> 4

else 在 for 循環(huán)中的使用

  • else 語(yǔ)句只能在 for 循環(huán)正常退出后執(zhí)行
  • 也就是說(shuō)循環(huán)沒(méi)有報(bào)錯(cuò),沒(méi)有中途停止的情況下, else 語(yǔ)句 才會(huì)發(fā)生作用

示例如下:

'''
for 變量 in 序列:
    代碼塊 1
else:
    代碼塊 2
'''


test_int = range(5)

for item in test_int:
    print(item)
else:
    print('for循環(huán)成功結(jié)束')

重點(diǎn)

  • 若想執(zhí)行 else 里面的代碼塊,必須是觸達(dá)到循環(huán)條件且為假
  • 如果在循環(huán)里面提前結(jié)束了循環(huán)(break),則不會(huì)執(zhí)行 else 里面的代碼塊

for 循環(huán)刪除列表元素的避坑指南

首先,我們定義一個(gè)列表,使用 for 循環(huán) 刪除列表中偶數(shù)(即能夠被2整除的元素)

test_list = [3, 6, 8, 9, 25, 36, 100, 105]

for item in test_list:
    if item % 2 == 0:
        test_list.remove(item)
print(test_list)

# 執(zhí)行結(jié)果如下:
# >>> [3, 8, 9, 25, 100, 105]

這里我們會(huì)發(fā)現(xiàn) 元素 8 、元素 100 仍然存在,刪除 偶數(shù) 元素的操作存在了遺漏。這是為什么呢?

其實(shí),這是因?yàn)?remove() 函數(shù)在執(zhí)行刪除一個(gè)元素之后,后邊的元素會(huì)自動(dòng)補(bǔ)位到上一個(gè)被刪除元素的位置上去。然而此時(shí)的 for 循環(huán) 在正向的往下運(yùn)行,會(huì)略過(guò)這個(gè)補(bǔ)位的元素,由此就造成了遍歷的遺漏。

所以正確的遍歷代碼如下:

test_list = [3, 6, 8, 9, 25, 36, 100, 105]

for item in test_list[::-1]:
    if item % 2 == 0:
        test_list.remove(item)
print(test_list)

# 執(zhí)行結(jié)果如下:
# >>> [3, 9, 25, 105]

嵌套 for 循環(huán)

什么是嵌套 for 循環(huán)? —> 即 for 循環(huán)中還有 for 循環(huán)

示例如下:

for i in range(3):
    for j in range(2):
        print('內(nèi)層循環(huán):', j)
        print('外層循環(huán):', i)

# >>> 執(zhí)行結(jié)果如下:
# >>> 內(nèi)層循環(huán): 0
# >>> 外層循環(huán): 0
# >>> 內(nèi)層循環(huán): 1
# >>> 外層循環(huán): 0
# >>> 內(nèi)層循環(huán): 0
# >>> 外層循環(huán): 1
# >>> 內(nèi)層循環(huán): 1
# >>> 外層循環(huán): 1
# >>> 內(nèi)層循環(huán): 0
# >>> 外層循環(huán): 2
# >>> 內(nèi)層循環(huán): 1
# >>> 外層循環(huán): 2




name = ['Neo', 'Jack', 'Lily']
age = [17, 18]

for a in name:
    # print(a)
    for b in age:
        print('姓名:', a, '年齡:', b)
        
# >>> 執(zhí)行結(jié)果如下:
# >>> 姓名: Neo 年齡: 17
# >>> 姓名: Neo 年齡: 18
# >>> 姓名: Jack 年齡: 17
# >>> 姓名: Jack 年齡: 18
# >>> 姓名: Lily 年齡: 17
# >>> 姓名: Lily 年齡: 18

while 循環(huán)

什么是 while 循環(huán)? —> 以一定條件為基礎(chǔ)的循環(huán),條件滿足的情況下無(wú)限循環(huán),條件不滿足則退出循環(huán)。

while 循環(huán) 不依賴可迭代的數(shù)據(jù)類型,而 for 循環(huán)依賴。

while 循環(huán)的功能:在滿足條件的情況下,會(huì)無(wú)限循環(huán);不滿足條件后,將停止循環(huán)。

while 循環(huán)的用法:示例如下

while bool_result:
    do
    
# >>> bool_result : 布爾類型,此處與 if 語(yǔ)法完全一直
# >>> do : while 循環(huán)體的代碼塊;需要縮進(jìn)
# >>> 返回值 : while 循環(huán)是語(yǔ)句,沒(méi)有返回值


test_int = 1

while test_int < 5:
    print(test_int, end='\n')
    test_int += 1

# >>> 執(zhí)行結(jié)果如下:
# >>> 1
# >>> 2
# >>> 3
# >>> 4
users_list = ['Neo', 'Jack', 'Lily', 'Adem']
index = 0
length = len(users_list)

while index <= length - 1:
    print('當(dāng)前循環(huán)到的用戶名為:', users_list[index])
    index += 1

print('while循環(huán)結(jié)束')

# >>> 執(zhí)行結(jié)果如下:
# >>> 當(dāng)前循環(huán)到的用戶名為: Neo
# >>> 當(dāng)前循環(huán)到的用戶名為: Jack
# >>> 當(dāng)前循環(huán)到的用戶名為: Lily
# >>> 當(dāng)前循環(huán)到的用戶名為: Adem
# >>> while循環(huán)結(jié)束

注意:應(yīng)避免 while True: 的情況,否則會(huì)進(jìn)入死循環(huán)。

拓展:列表推導(dǎo)式

列表推導(dǎo)式也叫做列表解析式,是一種快速創(chuàng)建列表的簡(jiǎn)潔語(yǔ)法。

列表推導(dǎo)式以[]中括號(hào)為標(biāo)志,一般由表達(dá)式、循環(huán)語(yǔ)句、條件語(yǔ)句組成(條件語(yǔ)句非必須)。

列表推導(dǎo)式 和 for 循環(huán)明顯存在的關(guān)聯(lián),下面我們看一下對(duì)比。

# 20以內(nèi)所有偶數(shù)的平方
list_1 = []
for x in range(20):
    if x % 2 == 0:
        list_1.append(x**2)
print(list_1)   
# 運(yùn)行結(jié)果:[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]


# 列表推導(dǎo)式,20以內(nèi)所有偶數(shù)的平方
print([x ** 2 for x in range(20) if x % 2 == 0])
# 運(yùn)行結(jié)果:[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

列表推導(dǎo)式對(duì) for 循環(huán)語(yǔ)句的格式做了一下簡(jiǎn)單的變形,并用 [ ] 括起來(lái),最終將循環(huán)過(guò)程中計(jì)算表達(dá)式得到的一系列值組成一個(gè)列表。

常見(jiàn)的推導(dǎo)式方法

元組推導(dǎo)式如下:

# 元組推導(dǎo)式
t_1 = (x for x in range(10))  # 結(jié)果是生成器對(duì)象,使用tuple()函數(shù)將其轉(zhuǎn)換為元組
print(tuple(t_1))   
# 運(yùn)行結(jié)果:(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

字典推導(dǎo)式如下:

# 字典推導(dǎo)式
print({x:x**2 for x in range(10)})
# 運(yùn)行結(jié)果:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

集合推導(dǎo)式如下:

# 集合推導(dǎo)式
print({x for x in range(10)}) 
# 運(yùn)行結(jié)果:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

循環(huán)的繼續(xù)與退出(continue 與 break)

前面我們學(xué)習(xí)了 for 循環(huán) 與 while 循環(huán) , 它們可以幫助我們自動(dòng)處理一些業(yè)務(wù)。但是在循環(huán)中難免會(huì)出一些意外的狀況,這個(gè)時(shí)候如果再繼續(xù)循環(huán)下去,就會(huì)對(duì)我們的業(yè)務(wù)不利,這個(gè)時(shí)候就需要使用到 continue 、break 來(lái)幫助我們河貍的退出循環(huán)。

continue 的使用

continue 的功能:循環(huán)遇到 continue 將停止本次數(shù)據(jù)循環(huán),進(jìn)行下一次循環(huán)

continue 的用法:示例如下

while bool:
    continue
for item in iterable:
    continue
    print(item)
    
# >>> continue : 屬于語(yǔ)法,不需要加 () 即可執(zhí)行;無(wú)參數(shù)
# >>> 返回值 : continue 是語(yǔ)法,沒(méi)有返回值。


count = 1
while count < 5:
    print(count)
    continue
    count += 1
    
# >>> 執(zhí)行結(jié)果如下:
# >>> 1, 1, 1, 1, ...  無(wú)限循環(huán),一直是1

break 的使用

break 的功能:是循環(huán)正常停止循環(huán)(遍歷),這時(shí)如果循環(huán)配合了 else 語(yǔ)句,else語(yǔ)句將不執(zhí)行。

break 的用法:示例如下

while bool:
    break
for item in iterable
	print(item)
    break
    
# >>> break :屬于語(yǔ)法,不需要加 () 即可執(zhí)行;無(wú)參數(shù)。
# >>> 返回值 : break 是語(yǔ)法,沒(méi)有返回值。


count = 1
while count < 5:
    print(count)
    count += 1
    break
    
# >>> 執(zhí)行結(jié)果如下:
# >>> 1

條件語(yǔ)句 與 continue、break 的關(guān)系

  • continu 與 break 通常伴隨著循環(huán)語(yǔ)句中的條件語(yǔ)句,滿足某些條件可以繼續(xù)執(zhí)行,不滿足某些條件提前結(jié)束循環(huán)。
  • 在 while 循環(huán)中,break 語(yǔ)句的優(yōu)先權(quán)要大于 while 邏輯塊的判斷結(jié)果 (比如上文中的 count += 1)

示例如下:

count = 1
while count < 5:
    print(count)
    count += 1
    if count == 2:
    	break

# >>> 執(zhí)行結(jié)果如下:
# >>> 1

循環(huán)實(shí)現(xiàn)九九乘法表

代碼示例如下:

# for 循環(huán) 實(shí)現(xiàn)九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print('{} * {} = {}'.format(i, j, i * j), end=' ')
    print('')
    

# >>> 執(zhí)行結(jié)果如下:
# >>> 1 * 1 = 1 
# >>> 2 * 1 = 2 2 * 2 = 4 
# >>> 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 
# >>> 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 
# >>> 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 
# >>> 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 
# >>> 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 
# >>> 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 
# >>> 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81 
# while 循環(huán) 實(shí)現(xiàn)九九乘法表

i = 0
j = 0

while i < 9:
    i += 1
    while j < 9:
        j += 1
        print('{} * {} = {}'.format(j, i, i * j), end=' ')
        if i == j:
            j = 0
            print('')
            break
            
# >>> 執(zhí)行結(jié)果如下:
# >>> 1 * 1 = 1 
# >>> 1 * 2 = 2 2 * 2 = 4 
# >>> 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 
# >>> 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 
# >>> 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 
# >>> 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 
# >>> 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 
# >>> 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 
# >>> 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 

如何使用一行代碼實(shí)現(xiàn)九九乘法表

print('\n'.join([' '.join(['{} * {} = {} '.format(item_1, item_2, item_1 * item_2) for item_2 in range(1, 10) if item_2 <= item_1]) for item_1 in range(1, 10)]))


# 利用了 列表推導(dǎo)式 及 列表轉(zhuǎn)字符串
# 但使用這種方式的閱讀性極差, 項(xiàng)目中絕不能使用

到此這篇關(guān)于Python學(xué)習(xí)之循環(huán)方法詳解的文章就介紹到這了,更多相關(guān)Python循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python ndarray數(shù)組對(duì)象特點(diǎn)及實(shí)例分享

    python ndarray數(shù)組對(duì)象特點(diǎn)及實(shí)例分享

    在本篇文章里小編給大家分享的是一篇關(guān)于python ndarray數(shù)組對(duì)象特點(diǎn)及實(shí)例相關(guān)內(nèi)容,有需要的朋友們跟著學(xué)習(xí)下。
    2021-10-10
  • 使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理

    使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理

    這篇文章主要介紹了使用Python處理EXCEL基礎(chǔ)操作篇2,如何使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理,文中提供了解決思路和部分實(shí)現(xiàn)代碼,一起來(lái)看看吧
    2023-03-03
  • Python如何處理JSON數(shù)據(jù)詳解

    Python如何處理JSON數(shù)據(jù)詳解

    讀取json數(shù)據(jù)實(shí)際上是把json格式變成python中字典、列表等格式化的數(shù)據(jù),極大地方便索引查找,下面這篇文章主要給大家介紹了關(guān)于Python如何處理JSON數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Python 解決OPEN讀文件報(bào)錯(cuò) ,路徑以及r的問(wèn)題

    Python 解決OPEN讀文件報(bào)錯(cuò) ,路徑以及r的問(wèn)題

    今天小編就為大家分享一篇Python 解決OPEN讀文件報(bào)錯(cuò) ,路徑以及r的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 決策樹(shù)的python實(shí)現(xiàn)方法

    決策樹(shù)的python實(shí)現(xiàn)方法

    這篇文章主要介紹了決策樹(shù)的python實(shí)現(xiàn)方法,詳細(xì)分析了決策樹(shù)的優(yōu)缺點(diǎn)及算法思想并以完整實(shí)例形式講述了Python實(shí)現(xiàn)決策樹(shù)的方法,具有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • python使用turtle庫(kù)寫(xiě)六角形的思路與代碼

    python使用turtle庫(kù)寫(xiě)六角形的思路與代碼

    學(xué)習(xí)Python,接觸到turtle包,就用它來(lái)畫(huà)一下六邊形,下面這篇文章主要給大家介紹了關(guān)于python使用turtle庫(kù)寫(xiě)六角形的思路與代碼,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Python如何import文件夾下的文件(實(shí)現(xiàn)方法)

    Python如何import文件夾下的文件(實(shí)現(xiàn)方法)

    下面小編就為大家?guī)?lái)一篇Python如何import文件夾下的文件(實(shí)現(xiàn)方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Python tkinter padx參數(shù)詳解

    Python tkinter padx參數(shù)詳解

    這篇文章主要介紹了tkinter padx參數(shù),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • Python學(xué)習(xí)之a(chǎn)syncore模塊用法實(shí)例教程

    Python學(xué)習(xí)之a(chǎn)syncore模塊用法實(shí)例教程

    這篇文章主要介紹了Python學(xué)習(xí)之a(chǎn)syncore模塊用法,主要講述了asyncore模塊的組成、原理及相關(guān)函數(shù)的用法,對(duì)于使用Python進(jìn)行網(wǎng)絡(luò)編程來(lái)說(shuō)非常實(shí)用,需要的朋友可以參考下
    2014-09-09
  • Python實(shí)現(xiàn)PS濾鏡Fish lens圖像扭曲效果示例

    Python實(shí)現(xiàn)PS濾鏡Fish lens圖像扭曲效果示例

    這篇文章主要介紹了Python實(shí)現(xiàn)PS濾鏡Fish lens圖像扭曲效果,結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)PS濾鏡的圖像扭曲效果相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01

最新評(píng)論