切片
舉個列子:取一個list或tuple的前三個元素扶认,l = [1, 2, 3, 4],取列表l的前3個元素
- 笨方法:
l = [1, 2, 3, 4]
print([l[0], l[1], l[2]])
- 循環(huán)獲取前3個元素
r = []
l = [1, 2, 3, 4]
n = 3
for i in range(n):
r.apped(l[i])
print(r)
- 切片操作符,此功能大大簡化了這種操作
print(l[0: 3])
l[0: 3]表示,從索引0開始取,知道索引3為止替饿,但是不包括索引3,即索引0贸典,1视卢,2,正好3個元素(包頭不包尾)廊驼。若第一個索引是0据过,還可以省略颊埃,即:
print(l[: 3])
還有如下操作方式
# 從索引1開始取2個元素出來
print([1: 3])
# 支持取倒數(shù)第一個元素,同樣支持倒數(shù)切片
# 從倒數(shù)第2個開始取2個元素出來
print(l[-2: -1])
# 從倒數(shù)第2個開始到最后
print(l[-2:])
切片操作還支持步長取元素蝶俱,如班利,每2個取1個元素
print(l[::2])
# 前3個每2個取1個
print(l[:3:2])
tuple也可以使用切片,只是操作的結果仍是tuple榨呆。字符串也可以進行切片罗标,只是操作的結果仍是字符串。
迭代
給定一個list或tuple,我們可以通過for循環(huán)來遍歷這個list或tuple竿拆,這種遍歷被稱為迭代宙拉。
python中,迭代是通過for...in來完成的丙笋,而很多語言是通過下標完成的谢澈。在python中,python的for循環(huán)不僅可以用在list或tuple上御板,還可以作用在其他可迭代對象上锥忿。例如:dict,就可以迭代
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
.... print(key)
a
c
b
因為dict的存儲不是按照list的方式順序排序怠肋,所以迭代出的結果順序很可能不一樣敬鬓。默認情況下,dict的迭代時key笙各,若想迭代value钉答,可用用 for value in d.values()。還可以同時迭代key和value杈抢,for k, v in d.items()数尿。
Tips
如何判斷一個對象是可迭代對象。通過collections沒模塊的Iterable類型判斷:
from collections import Iterable
print(isinstance('ABC', Iterable)) #True
print(isinstance([1, 2, 3], Iterable)) #True
print(isinstance(123, Iterable)) #False