python學習 第五站 高階特性

2021-10-21 23:48:07 字數 2560 閱讀 5152

利用python的高階特性,實現用少量**實現功能,做到**少,開發效率高。

普通索引對經常取定範圍索引操作,需採用迴圈方式,顯得十分的繁瑣,slice就是為了簡化這繁瑣操作衍生出來的產品。切片(slice)是對序列型物件(如list, string, tuple)的一種高階索引方法。普通索引只取出序列中乙個下標對應的元素,而切片取出序列中乙個範圍對應的元素,這裡的範圍不是狹義上的連續片段。例子:

列表:

lt = [1,'hello','早上好']
只想獲取後面兩個引數:

普通索引

>>> lt = [1,'hello','早上好']

>>> lt

[1, 'hello', '早上好']

>>> ltnew =

>>> for i in range(3):

... if i > 0:

...>>>

>>> ltnew

['hello', '早上好']

切片

>>> lt[1:3]

['hello', '早上好']

迭代就是遍歷,也就是for迴圈。怎麼判斷是否可以迭代呢?

>>> from collections import iterable

>>> isinstance('abc', iterable) # str是否可迭代

true

列表生成式即list comprehensions,字譯–>用來建立list的生成式

如:[1,2,3,4,5,6],可以用list(range(1,7))

>>> l = range(1,11)

>>> list(l)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

利用列表生成式和迭代的方式可以快速的拿到想要的列表,如lt = [1,『hello』,『早上好』],想要獲取lt中字串:

>>> lt = [1, 'hello', '早上好']

>>> ltstring = [s.lower() for s in lt if isinstance(s, str)]

>>> ltstring

['hello', '早上好']

臨時跳躍一下知識點: s.lower 最後把乙個list中所有的字串變成小寫

for s in l1 for迴圈

if isinstance(s, str) 判斷條件,isinstance函式用於判斷,第乙個引數是需要被判斷的變數,第二個是判斷條件,這是判斷s變數是不是字串

一邊迴圈一邊計算的機制稱之為生成器,簡單的建立方式是將列表生成式的改為()就可以了

>>> lg = (1, 'hello', '早上好')

>>> for n in lg:

... print('n:', n)

...n: 1

n: hello

n: 早上好

上面沒有運算,無法體現生成器的優勢,下面就拿廖雪峰老師的練習題楊輝三角來體驗一下吧!

>>> def ********s():

... l = [1]

... while true:

... yield l

... l = [sum(i) for i in zip([0] + l, l + [0])]

...>>> n = 0

>>> results =

>>> for t in ********s():

... n = n + 1

... if n == 10:

... break

...>>> for t in results:

... print(t)

...[1]

[1, 1]

[1, 2, 1]

[1, 3, 3, 1]

[1, 4, 6, 4, 1]

[1, 5, 10, 10, 5, 1]

[1, 6, 15, 20, 15, 6, 1]

[1, 7, 21, 35, 35, 21, 7, 1]

[1, 8, 28, 56, 70, 56, 28, 8, 1]

[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]

如果乙個函式定義中包含yield關鍵字,那麼這個函式就不再是乙個普通函式,而是乙個generator(生成器)。

需要特別注重理解的就是generator和函式的執行流程不一樣。函式是順序執行,遇到return語句或者最後一行函式語句就返回,再次執行就是重新開始。而變成generator的函式,在每次呼叫next()的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行。

補充知識:

sum函式式對序列進行求和計算;zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。

python學習 高階特性

高階函式 可以使用函式作為引數的函式 def f func sorted 對列表排序,有乙個名為key的引數 指定key為abs,根據l的絕對值排序sorted l,key abs filter 對序列過濾 filter a,b a為函式,b為被處理的資料列表,a會對b中的每個元素判斷,結果為真擇保...

python初學第五天 高階特性之切片

切片就是按位置取出 乙個list或者tuple 的一部分 l michael sarah tracy bob jack l 0 3 michael sarah tracy 切片操作 l 0 n 指從取出前n個元素,即從索引為0 到 n 1 的元素,不包括n,在切片操作中 只取到索引為 n 1的元素,...

python初學第五天 高階特性之列表生成式

如果要生成list 1,2,3,4,5,6,7,8,9,10 可以使用list range 1,11 但是如果要生成x x 首先可以通過迴圈來新增元素到列表後部,但是較為繁瑣 第二種方法則是使用列表生成式來生成list x x for x in range 1 11 1,4 9,16 25,36 4...