Python學習筆記(六)
流程控制及相關函式
- Python學習筆記(六)
- 一. range() 函式
- 二. 串列推導式
- for運算式
- 三. 內置函式
- zip函式
- reversed函式
- sorted函式
- 四.break和continue用法
- break
- continue
一. range() 函式
range(stop)
range(start, stop[, step])
start: 計數從 start 開始,默認是從 0 開始
stop: 計數到 stop 結束,不包括 stop
step:步長,默認為1
range() 函式的回傳值型別為 range,而不是 list
要得到用 range() 函式創建的數字串列,需要list() 函式
list(range(1,6))
使用 range() 函式時,可以指定步長,即便 range() 第二個引數恰好符合條件,最終創建的數字串列中也不會包含它
range(2,11,2) # 1~10 內的偶數
range() 函式常常和回圈結構、推導式一起使用,幾乎能夠創建任何需要的數字串列
二. 串列推導式
串列推導式利用 range 區間、元組、串列、字典和集合等資料型別,快速生成一個滿足指定需求的串列
for運算式
語法格式:
[運算式 for 迭代變數 in 可迭代物件 [if 條件運算式] ]
[if 條件運算式] 不是必須的
運算式就是 for 回圈中的回圈體:
for 迭代變數 in 可迭代物件
運算式
串列推導式最侄訓將回圈程序中計算運算式得到的值組成一個串列
>>>a_range = range(10)
>>>a_list = [x * x for x in a_range] # 對a_range執行for運算式
>>>print(a_list)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>a_range = range(10)
>>>a_list = [x * x for x in a_range if x % 2 == 0] #增加if判斷,推導式只處理 range 區間的偶數
>>>print(a_list)
[0, 4, 16, 36, 64]
>>>a_list = [(x, y) for x in range(3) for y in range(3)] #串列推導式的多回圈
>>>print(a_list)
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
上述for運算式相當于for回圈嵌套:
a_list = []
for x in range(3):
for y in range(3):
a_list.append((x, y))
包含多個回圈的 for 運算式,同樣可指定 if 條件
三. 內置函式
zip函式
將多個序列(串列、元組、字典、集合、字串以及 range() 區間構成的串列)變成一個 zip 物件
將這些序列中對應位置的元素重新組合,生成新的元組
zip(iterable, ...)
iterable,... 表示多個串列、元組、字典、集合、字串,range() 區間
>>>a_list = [1,2,3]
>>>a_tuple = (4,5,6)
>>>print([x for x in zip(a_list,a_tuple)])
[(1, 4), (2, 5), (3, 6)]
>>>a_dict = {2:2,3:3,4:4}
>>>b_dict = {5:5,6:6,7:7,8:8}
>>>print([x for x in zip(a_dict,b_dict)])
[(2, 8), (3, 5), (4, 6)]
使用zip()函式時,會分別取各序列中第1個元素、第2個元素到第n個元素,各自組成新的元組,字典取key
當多個序列中元素個數不一致時,會以最短的序列為準進行壓縮
zip()函式回傳的 zip 物件可以通過呼叫list()函式將zip()物件轉換成串列
>>>print(type(zip(a_list,a_tuple)))
<class 'zip'>
>>>print(type(list(zip(a_list,a_tuple))))
<class 'list'>
reversed函式
對于給定的序列(包括串列、元組、字串以及 range() 區間)回傳逆序序列的迭代器,用于遍歷該逆序序列
reversed(seq)
seq 可以是串列,元素,字串以及 range() 生成的區間串列
使用 reversed() 函式進行逆序操作,并不會修改原來序列中元素的順序
>>>print([x for x in reversed([1,2,3,4,5])]) #將串列進行逆序
[5, 4, 3, 2, 1]
使用list()函式,將 reversed() 函式逆序回傳的迭代器,直接轉換成串列
>>>print(type(list(reversed([1,2,3,4,5]))))
<class 'list'>
>>>print(type(reversed([1,2,3,4,5])))
<class 'list_reverseiterator'>
sorted函式
對序列(串列、元組、字典、集合、還包括字串)進行排序
list = sorted(iterable, key=None, reverse=False)
iterable 表示指定的序列
key 自定義排序規則
reverse 指定升序(False,默認)降序(True)進行排序
key 引數和 reverse 引數是可選引數
sorted()函式對序列進行排序,不會修改原來序列中元素的順序,而是重新生成一個串列
>>>a_list = [1,2,3,4,5,6]
>>>print(sorted(a_list))
[1, 2, 3, 4, 5, 6]
>>>a_dict = {1:5,2:4,3:3,4:2,5:1}
>>>print(sorted(a_dict.items())) #字典默認按照key進行排序
[(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)]
dict.items()函式以串列回傳可遍歷的(key, valu) 元組陣列
默認對序列中元素進行升序排序,可手動將reverse引數值改為True,實作降序排序
sorted(a_list,reverse=True)
呼叫sorted()函式時,可加入key引數來接受一個函式,指定 sorted() 函式按照什么標準進行排序
sorted(a_list,key=lambda x:len(x)) ##使用lambda表示式自定義按照字串長度排序
lambda運算式(匿名函式),常用來表示內部僅包含 1 行運算式的函式
四.break和continue用法
在執行 while 回圈或者 for 回圈時,如果希望在回圈結束前就強制結束回圈,可以使用Python提供的強制離開當前回圈體的辦法:break和continue
break
break 陳述句
完全終止當前回圈,跳出當前所在的回圈結構
break陳述句一般結合if陳述句進行搭配使用,表示在某種條件下跳出回圈體
name = "youchanwill"
for i in name:
if i == 'y' :
break #終止回圈
print(i,end="")
else:
print("執行else陳述句")
print("跳出回圈體")
使用 break 跳出當前回圈體之后,該回圈后的 else 代碼塊也不會被執行
對于嵌套回圈結構,break陳述句只會終止所在回圈體的執行,而不會作用于所有的回圈體
name = "youchanwill"
for i in range(3):
for j in name:
if j == 'y':
break
print(j,end="")
print("跳出內回圈")
跳出內回圈
跳出內回圈
跳出內回圈
每當執行內層回圈時,只要回圈至執行 break 陳述句,會立即停止執行當前所在的記憶體回圈體,繼續執行外層回圈
在嵌套回圈結構中使用break同時跳出內層回圈和外層回圈(支持跳出多層嵌套回圈)
name = "youchanwill"
flag = False #定義一個bool變數
for i in range(3):
for j in name:
if j == 'y':
flag = True #在break前,修改bool變數
break
print(j,end="")
print("\n跳出內回圈")
if flag == True:
print("跳出外層回圈")
break #在外層回圈體中使用 break
跳出內回圈
跳出外層回圈
通過bool型別的變數,在跳出內回圈時更改值,在外層回圈體中,判斷值是否發生變化,如有變化,則再次執行 break 跳出外層回圈
continue
continue 陳述句
跳過執行本次回圈體中剩余的代碼,轉而執行下一次的回圈
name = "youchanwill"
for i in range(3):
for j in name:
if j == 'y':
print('')
continue
print(j,end="")
ouchanwill
ouchanwill
ouchanwill
continue陳述句和break陳述句一樣,只需在while或for陳述句中的相應位置加入
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/258185.html
標籤:python
上一篇:單調堆疊演算法
