一篇文章帶你學習Python3的高級特性(1)
1.切片
# 切片:取list或tuple的部分元素 nameList = ["Willard","ChenJD","ChenBao","ChenXiaoBao","hackerLuo"] print("nameList的內容為:",nameList) print("------------------------------------------------------------------------------") # 傳統方法取nameList前三個元素 print("nameList前三個元素:",[nameList[0],nameList[1],nameList[2]]) print("------------------------------------------------------------------------------") # 使用切片取前三個元素,註:切片也是左閉右開 print("使用切片操作取nameList前三個元素:",nameList[0:3]) print("使用切片操作取nameList第二個到第四個元素:",nameList[1:5]) print("------------------------------------------------------------------------------") print("------------------------------------------------------------------------------") # 切片的一些常用操作 numsList = list(range(30)) print("數字列表內容為:\n",numsList) print("------------------------------------------------------------------------------") print("數字列表前10個數內容:",numsList[0:10]) print("數字列表前10個數內容:",numsList[:10]) print("\n") print("數字列表後10個數內容:",numsList[-10:]) print("數字列表前11-20個數內容:",numsList[10:20]) print("數字列表前10個數每隔兩個取一個:",numsList[0:10:2]) print("數字列表前10個數每隔兩個取一個:",numsList[:10:2]) print("數字列表每隔3個數取一個:",numsList[::3]) print("數字列表內容:\n",numsList[:]) # Tips: # 1.tuple可以使用切片操作,操作的結果仍是tuple; # (0,1,2,3,4,5)[:3] ===> (0,1,2) # 2.字符串使用切片操作,一個字符就是一個元素 # "Welcome to FUXI Technology."[:3] ===> "Wel"
# 結果輸出:
nameList的內容為: ['Willard', 'ChenJD', 'ChenBao', 'ChenXiaoBao', 'hackerLuo']
——————————————————————————
nameList前三個元素: ['Willard', 'ChenJD', 'ChenBao']
——————————————————————————
使用切片操作取nameList前三個元素: ['Willard', 'ChenJD', 'ChenBao']
使用切片操作取nameList第二個到第四個元素: ['ChenJD', 'ChenBao', 'ChenXiaoBao', 'hackerLuo']
——————————————————————————
——————————————————————————
數字列表內容為:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
——————————————————————————
數字列表前10個數內容: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
數字列表前10個數內容: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]數字列表後10個數內容: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
數字列表前11-20個數內容: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
數字列表前10個數每隔兩個取一個: [0, 2, 4, 6, 8]
數字列表前10個數每隔兩個取一個: [0, 2, 4, 6, 8]
數字列表每隔3個數取一個: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
數字列表內容:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
2.迭代
# 給定一個list或tuple,通過for循環來遍歷這個list或tuple,這種遍歷稱為迭代(iteration);# 迭代通過for...in來完成;# 實例1:迭代dictpersonInfoDict = {"name":"Willard","age":18,"job":"Engineer"}print("使用迭代讀取dict內容!")print("personInfoDict的內容:",personInfoDict)print("------------------------------------------------------------------------------")# 讀取personInfoDict的key值print("personInfoDict的key值:")for key in personInfoDict: print(key,end = " ")print("\n")print("personInfoDict的value值:")for value in personInfoDict.values(): print(value,end = " ") print("\n")print("personInfoDict的key-value值:")for item in personInfoDict.items(): print(item,end = " ")print("\n")print("------------------------------------------------------------------------------")print("------------------------------------------------------------------------------")# 實例2:迭代讀取字符串userNameStr = "WillardLuo"print("使用迭代讀取字符串內容!")print("userNameStr的內容:",userNameStr)print("------------------------------------------------------------------------------")print("userNameStr的每個元素為:")for word in userNameStr: print(word,end = " ")# 給定一個list或tuple,通過for循環來遍歷這個list或tuple,這種遍歷稱為迭代(iteration); # 迭代通過for...in來完成; # 實例1:迭代dict personInfoDict = {"name":"Willard","age":18,"job":"Engineer"} print("使用迭代讀取dict內容!") print("personInfoDict的內容:",personInfoDict) print("------------------------------------------------------------------------------") # 讀取personInfoDict的key值 print("personInfoDict的key值:") for key in personInfoDict: print(key,end = " ") print("\n") print("personInfoDict的value值:") for value in personInfoDict.values(): print(value,end = " ") print("\n") print("personInfoDict的key-value值:") for item in personInfoDict.items(): print(item,end = " ") print("\n") print("------------------------------------------------------------------------------") print("------------------------------------------------------------------------------") # 實例2:迭代讀取字符串 userNameStr = "WillardLuo" print("使用迭代讀取字符串內容!") print("userNameStr的內容:",userNameStr) print("------------------------------------------------------------------------------") print("userNameStr的每個元素為:") for word in userNameStr: print(word,end = " ")
# 結果輸出:
使用迭代讀取dict內容!
personInfoDict的內容: {'name': 'Willard', 'age': 18, 'job': 'Engineer'}
——————————————————————————
personInfoDict的key值:
name age jobpersonInfoDict的value值:
Willard 18 EngineerpersonInfoDict的key-value值:
('name', 'Willard') ('age', 18) ('job', 'Engineer')——————————————————————————
——————————————————————————
使用迭代讀取字符串內容!
userNameStr的內容: WillardLuo
——————————————————————————
userNameStr的每個元素為:
W i l l a r d L u o
# Tips: # 1.使用for...in循環需要作用於一個可迭代對象; # 2.判斷一個對象是否是可迭代對象,可通過collections.abs模塊的Iterable類型判斷 from collections.abc import Iterable nameStr = "WillardLuo" nameList = ["Willard","ChenJD","ChenBao"] numberTuple = (1,2,3,4,5) personInfoDict = {"name":"Willard","age":18} number = 100 print("判斷字符串是否是可迭代對象!") print(isinstance(nameStr,Iterable)) print("判斷列表是否是可迭代對象!") print(isinstance(nameList,Iterable)) print("判斷元組是否是可迭代對象!") print(isinstance(numberTuple,Iterable)) print("判斷字典是否是可迭代對象!") print(isinstance(personInfoDict,Iterable)) print("判斷數字是否是可迭代對象!") print(isinstance(number,Iterable)) print("------------------------------------------------------------------------------") print("------------------------------------------------------------------------------") # 實現對list進行下標循環 # 使用enumerate函數把一個list變成"索引-元素"對 nameList = ["Willard","ChenJD","ChenBao","ChenXiaoBao","hackerLuo"] for index,value in enumerate(nameList): print(index,value) print("------------------------------------------------------------------------------") willardInfo = {"name":"Willard","age":18,"job":"Engineer"} # 循環中同時引用兩個變量,數據處理中常用 for key,value in willardInfo.items(): print(key,value)
# 結果輸出:
判斷字符串是否是可迭代對象!
True
判斷列表是否是可迭代對象!
True
判斷元組是否是可迭代對象!
True
判斷字典是否是可迭代對象!
True
判斷數字是否是可迭代對象!
False
——————————————————————————
——————————————————————————
0 Willard
1 ChenJD
2 ChenBao
3 ChenXiaoBao
4 hackerLuo
——————————————————————————
name Willard
age 18
job Engineer
3.列表生成式
# 列表生成式:List Comprehensions,用來創建list的生成式 # 實例1:生成[1×1,2×2,3×3,...,10×10]的列表 # 法一:循環 numsList = [] for num in range(1,11): numsList.append(num * num) print("numsList的內容:",numsList) print("---------------------------------------------------------") # 法二:列表生成式 print("列表生成式生成上述列表!") # 把要生成的元素放在前面,後面加循環 print([num * num for num in range(1,11)]) print("---------------------------------------------------------") # 在循環後添加if判斷,篩選1-10中偶數的平方 print("列表生成式生成1-10偶數的平方的列表") print([num * num for num in range(1,11) if num % 2 == 0]) print("---------------------------------------------------------") # 雙重循環 print("列表生成式應用於雙重循環") print([m + n for m in "Willard" for n in "ChenJD"])
# 結果輸出:
numsList的內容: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
———————————————————
列表生成式生成上述列表!
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
———————————————————
列表生成式生成1-10偶數的平方的列表
[4, 16, 36, 64, 100]
———————————————————
列表生成式應用於雙重循環
['WC', 'Wh', 'We', 'Wn', 'WJ', 'WD', 'iC', 'ih', 'ie', 'in', 'iJ', 'iD', 'lC', 'lh', 'le', 'ln', 'lJ', 'lD', 'lC', 'lh', 'le', 'ln', 'lJ', 'lD', 'aC', 'ah', 'ae', 'an', 'aJ', 'aD', 'rC', 'rh', 're', 'rn', 'rJ', 'rD', 'dC', 'dh', 'de', 'dn', 'dJ', 'dD']
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- 一篇文章帶你學習Python3的高級特性(2)
- Python淺析迭代器Iterator的使用
- 代碼詳解Python的函數基礎(2)
- Python基礎之數據結構詳解
- Python 可迭代對象 iterable的具體使用