Python函式高階特性

2022-09-15 17:09:11 字數 1968 閱讀 5468

切片(擷取元素,可操作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)

def

fib(max):

n, a, b = 0, 0, 1

while n yield

b a, b = b, a +b

n = n + 1

return

'done

'

迭代器

from collections import

iterable

isinstance(, iterable)

#true 使用isinstance()來判斷是否是iterable物件

from collections import

iterator

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可省略,也支援負數按倒數的順序取值,什麼都不...