切片(擷取元素,可操作list,tuple,string)
l = list(range(100)) #[0,1,2,3,...,99]
l[0:10] = l[:10] #
擷取前10個數 [0,1,2,...,9]
l[-10:] #
擷取後10個數 [90,91,92,...,99]
l[10:20] #
擷取10-20位置的元素 [10,11,12,13,...,19]
l[:10:2] #
前10個數,每兩個取乙個 [0,2,4,6,8]
l[::5] #
所有數,每5個取1個 [0,5,10,...,95]
l[:] #
複製原陣列
迭代 for...in...
d =#預設情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時迭代key和value,可以用for k, v in d.items()
for i, value in enumerate(["a", "
b", "c"
]):
print(i, value) #
迭代list需要用到enumerate函式
#0 a
#1 b
#2 c
列表生成式
list(range(1,11)) #生成[1,2,3,..,10]
[x*x for x in range(1,11)] #
生成[1*1,2*2,3*3,...,10*10]
#列表生成式跟if判斷
[x*x for x in range(1,11) if x%2 ==0] #
生成[2*2,4*4,6*6,8*8,10*10]
#雙層迴圈生成全排列
[x+y for x in
"abc
"for y in
"xyz
"] #
生成['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']
生成器:genterator(一邊迴圈一邊計算,如果乙個函式中包含yield關鍵字,則該函式就是乙個generator)
g = (x*x for x in range(1,10))#呼叫方法:
next(g) #
每次呼叫next()方法來獲取元素,每次只能獲取乙個
for n in g: #
for迴圈內部會不斷呼叫next()方法
print(n)
deffib(max):
n, a, b = 0, 0, 1
while n yield
b a, b = b, a +b
n = n + 1
return
'done
'
迭代器
from collections importiterable
isinstance(, iterable)
#true 使用isinstance()來判斷是否是iterable物件
from collections importiterator
isinstance((x
for x in range(10)), iterator) #
使用isinstance()來判斷是否是iterator物件,iterator物件是惰性求值,只有在需要時才會求值
Python高階特性
l csx sarah tracy bob jack print l 0 l 1 l 2 輸出 csx sarah tracy l 0 3 輸出 csx sarah tracy 如果第乙個索引是0,還可以省略 print l 2 輸出 bob jack print l 2 1 輸出 bob d fo...
Python高階特性
python 高階特性 from collections import iterable from collections import iterator 切片 list切片 l list range 100 print l 0 3 取前3個元素 print l 3 取前3個元素 print l 4...
Python高階特性
切片 slice 非常靈活,體現了python的簡便性 1.取乙個list和tuple的部分元素時的簡化操作 l michael sarah tracy bob jack l 0 3 michael sarah tracy 從0開始不包括3,第乙個索引是0可省略,也支援負數按倒數的順序取值,什麼都不...