python列表與元組

列表與元組

python中最基礎的兩種集合,區別:列表是動態的,大小能夠改變,元組是不可變的,一旦建立就不能修改
,由於不變性,因此元組是可哈希的。 css

列表的介紹

列表是對其餘對象的引用組成的連續數組,由於是數組,因此數組有的優勢列表都有,查找效率比鏈表高,插入與刪除的操做效率比鏈表低。python的列表不是鏈表,須要真正的鏈表的時候,python在內置collections模塊中提供了deque(雙端隊列),他是棧和隊列的通常化(是雙向鏈表) html

列表推導

在使用常規的for循環往列表中添加數據時,由於python是解釋型語言,解釋器每次循環都須要判斷序列中須要修改的部分,而且須要用一個計數器來跟蹤須要處理的元素,而且在添加時使用append()方法是列表方法,,每次遍歷還須要額外執行查找append函數的查詢函數,列表推導正式解決這個問題的正確方法,它對上述一部分作了自動化處理,提升了效率
普通for循環添加數據 python

events=[]
for i in range(10):
    if i%2==0:
        events.append(i)

使用列表推導git

events=[i for i in range(10) if i%2==0]

enumerate(枚舉)

在循環使用序列時,均可以使用枚舉這個內置函數獲取其索引,不止列表能夠,但凡是序列類型的均可以,包括字符串: github

for i,e in enumerate('hello'):
... print(i,e)
...
0 h
1 e
2 l
3 l
4 o

若是須要合併多個列表中的元素,能夠使用內置的zip()函數。對兩個大小相等的可迭代對象進行均勻遍歷時, web

for item in zip([1,2,3],[4,5,6]):
... print(item)
...
(1, 4)
(2, 5)
(3, 6)

調用兩次zip時,可將其恢復原狀 canvas

for item in zip(*zip([1,2,3],[4,5,6])):
... print(item)
...
(1, 2, 3)
(4, 5, 6)

zip([1,2,3],[4,5,6])返回的是地址名,只有使用指針*zip([1,2,3],[4,5,6])才能夠有返回值 數組

序列解包

使用任意序列類型,只要賦值運算符左邊的變量數目與序列中的元素數目相等,均可以將序列中的元素解包到左邊的變量中去 ruby

a,b,*c='hello'
>>> a
'h'
>>> b
'e'
>>> c
['l', 'l', 'o']    
使用*號
>>> a,*b,c=0,1,2,3
>>> a,
(0,)
>>> b
[1, 2]
>>> c
3
嵌套解包
>>> (a,b),(c,d)=(1,2),(3,4)
>>> a
1
>>> b
2
>>> c
3
>>> d
4
相關文章
相關標籤/搜索