切片(Slice)
對經(jīng)常取指定索引范圍的操作,需要用循環(huán)的操作柑船,Python提供了切片(Slice)操作符至会,能大大簡化這種操作叛薯。
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
L[startIndex:endIndex]
為切片,startIndex
為起始位置索引旱幼,endIndex
為結(jié)束位置(但不包括endIndex
的元素)查描,如果startIndex
不寫,默認(rèn)為0。
L[:3]#即['Michael', 'Sarah', 'Tracy']
L[1:3]#即['Sarah', 'Tracy']
startIndex
和endIndex
支持負(fù)數(shù)冬三,同樣startIndex
為起始位置索引匀油,endIndex
為結(jié)束位置(但不包括endIndex
的元素),負(fù)數(shù)即為獲取倒數(shù)元素勾笆,-1表示倒數(shù)第一個也就是最后一個敌蚜。如果endIndex
不寫,默認(rèn)為-1窝爪。
L[-3:]#即['Tracy', 'Bob', 'Jack']
L[-3:-1]#即['Tracy', 'Bob']
如果startIndex
和endIndex
都不填寫相遇復(fù)制一個list
L[startIndex:endIndex:step]
其中step
表示每幾個取一個
L[::2]#表示每兩個去一個也就是['Michael', 'Tracy', 'Jack']
tuple
和list
的區(qū)別就是tuple
不可變切片之后仍然是tuple
弛车。另外,字符串也可以看成是一種list
蒲每,每個字符就是一個元素纷跛,切片之后是字符串
迭代(Iteration)
Python的迭代通過for...in...
完成的,list
可以直接使用來遍歷元素邀杏,dirt
同樣可以使用迭代操作
d = {"aa": 1, "bb": 2, "cc": 3}
for key in d:
print(key)
上面是遍歷dirt
的key贫奠,如果要遍歷dirt
的value使用for value in d.values()
,如果需要同時遍歷key和value望蜡,可以使用for key, value in d.items()
字符串也是可迭代類型叮阅,同樣可以使用,例如:for c in 'mrtrying'
只要是可以迭代的對象泣特,就可以使用迭代操作,通過collections
模塊的Iterable
類型判斷:
from collections import Iterable
b1 = isinstance('abc', Iterable) # str是否可迭代
print(b1)
b2 = isinstance([1,2,3], Iterable) # list是否可迭代
print(b2)
b3 = isinstance(123, Iterable) # 整數(shù)是否可迭代
print(b3)
在Python中可能出現(xiàn)需要list
的index
同時需要元素的情況挑随,為此提供了enumerate
方法状您,來同時迭代list
的index
和對應(yīng)元素
l = list(range(100, 110))
for i, value in enumerate(l):
print(i, value)