在Python中,代碼不是越多越好,而是越少越好;代碼不是越複雜越好,而是邏輯越簡單越好。基於這個思想,我們可以學習下Python的高級特性,它能減少代碼量。Python中,代碼越少,開發效率越高。
切片:
Python中取一個 list 或 tuple 中部分元素是很常見的操作,一般來講,有兩種笨方法,下面以取 list 前三個元素爲例:
>>> L1=[1,2,3,4,5]
>>> [L1[0],L1[1],L1[2]]
[1,2,3]
>>> L2=[]
>>> for i in range(3):
... L2.append(L2[i])
...
>>> L2
[1,2,3]
Python中的 切片 操作符能大大簡化這樣的寫法,示例如下:
>>> L1[0:3]
[1,2,3]
解釋一下,元素從索引0開始取,取到索引3停止,但不包括索引3。即索引0、1、2,共計3個元素,得到的結果仍是 list。
如果第一個索引是0的話,還可以省略掉,方法如下:
>>> L1[:3]
[1,2,3]
同理,取 list 第二個元素和第三個元素的寫法如下:
>>> L1[1:3]
[2,3]
Python中同樣也支持 倒數切面,倒數切片索引值從 -1 開始 ,示例如下:
>>> L1[-2:]
[4,5]
>>> L1[-2:-1]
[4]
以第二個執行語句爲例,解釋一下,元素從末尾開始取值,從索引-2開始,取到索引-1,但不包括-1,所以,只取到索引-2的一個元素,共計1個元素。
切片取值很靈活,比如,L1前四個元素每兩個元素取一次,寫法如下:
>>> L1[:4:2]
[1,3]
L1 中,所有元素每兩個元素取一次:
>>> L1[::2]
[1,3,5]
甚至,只寫切片符號的話,可以直接複製一個 list :
>>> L2 = L1[:]
>>> L2
[1,2,3,4,5]
其中,tuple 也是一種 list,也可使用切片方法,但操作的結果仍是 tuple,示例如下:
>>> (1,2,3,4,5)[:3]
(1,2,3)
在 Python 中,字符串也可執行切片操作,示例如下:
>>> 'ABCDEFG'[:3]
'ABC'
友情提示,小白的我開始把切片和切面思想弄混了。。基礎不紮實。。下面簡單說下我自己的理解:
切片 是針對列表取值時用的,如Python中 list、tuple的取值;而切面思想大體理解是 在一個整體項目中,切開一個口,把代碼放進去,讓它在項目運行時運行,不影響項目的正常運行,以Java爲例,常見的例子有:過濾器,監聽器,攔截器等。
迭代:
一般情況下我們會用 for 循環來遍歷 list 或 tuple 等,這種遍歷的方式我們稱爲迭代。
迭代一般常用在有下表的對象上,但在沒有下表的對象上也可以使用,以 dict 爲例,示例如下:
>>> d = {'a':'1','b':'2','c':'3'}
>>> for key in d:
... print(key)
...
a
b
c
>>> for value in d.values():
... print(value)
...
1
2
3
>>> for key,value in d.items():
... print(key,value)
...
a 1
b 2
c 3
字符串也是可以迭代的對象,示例如下:
>>> for x in 'ABCD':
... print(x)
...
A
B
C
D
當我們使用 for 循環時,只要對象是可迭代對象,就可以對其使用 for 循環,有個方法可以判斷 對象 是否是迭代對象,示例如下:
>>> from collections import Iterable
>>> isinstance('abc',Iterable)
True
>>> isinstance([1,2,3],Iterable)
True
>>> isinstance(123,Iterable)
False
如上所示,整數不可迭代。
要想打印出 list 的 下標,可以用 enumerate ,示例如下:
>>> for i,x in enumerate([1,2,3]):
... print(x)
...
0 1
1 2
2 3
上述例子中,循環定義了兩個變量,這種寫法在 Python 中很常見,一般可以這樣寫:
>>> for x,y in ([1,2],[3,4],[5.6]):
... print(x,y)
...
1 2
3 4
5 6
本篇暫時就到這裏了,教材網址:https://www.liaoxuefeng.com, 繼續學習~~