Python入門教程之高階特性
切片
在Python基礎篇裡,我們知道Python的可序列物件可以通過索引號(下標)來引用物件元素,索引號可以由0開始從左向右依次獲取,可以從-1開始由右向左獲取。這種方法可以幫助我們依次獲取我們想要的元素。而切片可以幫助我們獲取被切片元素的副本。
可序列物件切片時所需要的引數[start_index:stop_index:step]
start_index:切片的起始位置
stop_index:切片的結束為止(不包括)
step:步長,可選引數。預設值是1,但不能為0.表示依次遞增。
操作 |
解釋 | 輸出 |
print(testList) |
列印測試列表 | [1, 2, 3, 4, 5, 6, 7, 8, 9] |
print(testList[:]) |
輸出列表中所有元素 | [1, 2, 3, 4, 5, 6, 7, 8, 9] |
print(testList[1:7:2]) |
從第二個開始,到第8個元素(不包含),每次間隔2個元素 | [2,4,6] |
print(testList[:5]) |
從第一個開始,到第6個(不包含),預設間隔1個元素 | [1,2,3,4,5] |
print(testList[-5 :]) | 從右往左第五個開始至最後一個元素結束,預設間隔1個元素 | [5,6,7,8,9] |
print(testList[ ::2]) | 從第一個開始,到最後一個結束,每次間隔2個元素 | [1,3,5,7,9] |
print(testList[ ::-1]) | 從第一個開始,至最後一個結束,倒序間隔一個元素 | [9, 8, 7, 6, 5, 4, 3, 2, 1] |
testList[1:2]=['a'] print(testList) |
從第2個元素開始,第三個元素結束(不包含),插入並替換該區間元素 | [1, 'a', 3, 4, 5, 6, 7, 8, 9] |
del testList[1] print(testList) |
刪除第二個元素,請注意,這時只是從原來物件中的副本中刪除後重新獲取一個新的引用物件。 | [1, 3, 4, 5, 6, 7, 8, 9] |
del testList[1::2] |
從第二個元素開始刪除物件元素,至最後一個元素結束,每次間隔2個 | [1, 3, 5, 7, 9] |
迭代
在開發語言中,遍歷獲取可序列物件我們稱之為迭代。Python中,不僅可以像其他語言一樣迭代可序列物件還可以迭代任意可序列化物件。例如 字典,字串,元祖
案例 |
解釋 | 輸出 |
testList=[1,2,3] for i in testList: print(i) |
迭代列表 |
1 2 3 |
testStr='hello' for i in testStr: print(i) |
迭代字串 |
h e l l o |
testDic={'name':'zhangsan','age':18} for i in testDic: print(i) |
迴圈字典,預設輸出key |
name age |
判斷一個元素是否可以被迭代
在Python中可以通過collections模組的Iterable型別判斷元素是否可以被迭代,當元素允許被迭代時返回True,反之返回False
from collections import Iterable
案例 | 解釋 | 輸出 |
a=
isinstance(
'abc'
,Iterable) print(a) |
判斷字串(python中'a'也將作為字串"a")使用 | True |
testList=[
1
,
2
,
3]
isinstance(testList
,Iterable) print(a) |
判斷列表 | True |
testDict={
'name':
'zhangsan'
,
'age':
18}
isinstance(testDict
,Iterable) print(a) |
判斷字典 | True |
testTuple=(
1
,
2
,
3)
isinstance(testTuple
,Iterable) print(a) |
判斷元祖 | True |
testInt=
123
isinstance(testInt
,Iterable) print(a) |
判斷數值 | False |
列表生成式
Python中列表生成式不僅可以迭代輸出物件元素,還可以簡化我們的程式碼。
列表生成式 | ||
l=[] for x in range(1,11): l.append(x*x) print(l) |
n=[x*x for x in range(1,11)] print(n) |
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] |
列表生成式與if條件一起使用
for 迴圈 |
列表生成式 | 輸出 |
l=[1,2,4,5,6,7,8,9] k=[] for i in l: if i %2==0: k.append(i) print(k) |
l=[1,2,4,5,6,7,8,9] n=[xfor x inl if x%2==0 ] print(n) |
[2,4,6,8] |
列表生成式與字典一起使用
for迴圈 | 列表生成式 | 輸出 |
testDict={'name':'zhangsan','age':18} for n in testDict: print(n+'=:'+str(testDict[n])) |
testDict={'name':'zhangsan','age':18} b=[ k +'=' +str(v) for k ,v in testDict.items()] print(b) |
name=:zhangsan age=:18 和 ['name=zhangsan', 'age=18'] |
Linux公社的RSS地址 :ofollow,noindex" target="_blank">https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-10/154610.htm