利用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...