昨天是星期的第一天,簡單回顧下昨天學習的東西,在重新看下之前的博客吧。
好啦,接着今天的寶典開始學習吧,我只有在學不進去的時候纔會開啓我的魔幻世界,正常情況下,他應該都是隱藏在我體內。
列表:寶典上大概的意思是:列表是python的苦力,python也就是初心大陸啦。
不知道小P老師在哪裏找來的小苦力,試試我能使喚不。
重點說下:列表是可變的,可以更改列表的內容,簡單來說就是這個小苦力沒脾氣,咋欺負都行。
使用苦力先要用工具來敲打他,list函數就是工具之一。
因爲Hello這個小苦力不能修改,所以根據字符創建列表還是很有用的。
>>> list('Hello')
['H', 'e', 'l', 'l', 'o']
接着來掌握以下基本的列表操作:例如索引,分片,連接和乘法。有趣的是列表可以被修改。
改變列表:元素賦值
我之前好像學過賦值例如:x = 2,貌似沒必要把之前講過的在講一遍吧。
要使用索引標記來爲某個特定的位置明確的元素賦值:
接下來實踐:
>>> x = [1,1,1]
>>> x
[1, 1, 1]
>>> x[1] =2 這裏的因爲序列的開頭是從0開始的所以這裏的1,實際上是第二個元素。
>>> x
[1, 2, 1] x[1] 已經賦值給了2 所以這裏發生了更改。
>>>
注意事項:不能爲一個位置不存在的元素賦值,因爲他本身就不存在,咋賦值,例如列表長度爲2,那麼不能爲索引爲100的元素進行賦值,如果非要這麼做,就需要創建一個101或者更長的列表。
下面接着學習刪除元素:
從字面意思來說就是刪除元素,把元素刪除,貌似沒啥可說的,實驗吧:
根據實驗顯示,也沒啥可說的,就是把元素爲第二個的刪除了。
>>> names = ['Alice','Beth','Cecil','Dee-Dee','Earl']
>>> names
['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']
>>>
下面接着說,分片賦值:
簡單來說就是先分片,選出一段內容進行賦值替換,是這個吧。
試驗下看看:
先用list將Peal字符串創建成列表形式,再利用分片將第二個元素後面的元素進行賦值成dd
>>> name = list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name [2:] = list('dd')
>>> name
['P', 'e', 'd', 'd']
>>>
還有更好的功能,不光是等值替換,就算是原序列與不登長的序列也可以進行分片替換
試驗下:
>>> name = list('Peal')
>>> name[1:] = list('ython')
>>> name
['P', 'y', 't', 'h', 'o', 'n']
>>>
還有新功能,咋這麼牛逼,啥功能呀,
分片賦值不光能替換,還能插入新元素,你等等我先試試再說
>>> numbers = [1, 5]
>>> numbers[1:1] = [2,3,4]
>>> numbers
[1, 2, 3, 4, 5]
>>>
實際上剛剛的替換是利用了空的分片,那麼我利用空的分片也是可以用了刪除元素的。這個結果用del也是一樣的效果。
試試
>>> numbers = [1,2,3,4,5]
>>> numbers[1:4] = []
>>> numbers
[1, 5]
>>>
一個新的概念,列表方法,
方法是一個與某些對象有緊密聯繫的函數,對象可能是列表,數字,也可能是字符串或者其他類型的對象,一般調用方法的可以這樣
對象.方法(參數)
一個新的列表方法:append,作用用於在列表末尾追加新的對象:
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
>>> 爲啥變量名不起成list,而是lst呢,如果使用list作爲變量名,就無法調用list函數了。
append他修改的表,是直接修改的原來的列表。
第二個列表方法count,這個很顯而易見,count就是計數。
例如:還是實際操刀演示吧:
統計列表中to出現的次數。
>>> ['to','be','or','not','to','be'].count('to')
2
>>>
又一個新的列表方法,extend,話不多少,實驗搞起:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>>
有點問題,摺合字符串拼接貌似沒啥不一樣那呢。真的是這樣嗎?
字符串拼接,裏面的a最後還是沒有變化,而用了extend的話a是有發生改變的。
>>> a
[1, 2, 3]
>>> b
[4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]
>>>
貌似利用a = a + b也可以實現效果,就是可讀性沒有extend好
試驗下:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a
[1, 2, 3]
>>> b
[4, 5, 6]
>>> a = a + b
>>> a
[1, 2, 3, 4, 5, 6]
>>>
再說一個方法:index,作用說明:index方法用於從列表中找出某個值第一個匹配項第一個匹配項的索引位置:
>>> knights = ['We','are','the','knights','who','say','ni']
>>> knights.index('who')
4
>>> knights = ['We','are','the','knights','who','say','ni','ni']
>>> knights.index('ni')
6
>>>
>>> knights = ['We','are','the','knights','who','say','nvi','ni']
>>> knights.index('ni') 在調用列表內的內容,如果沒有會報異常。
7
>>>
insert方法,用於將對象插入到列表中,就是插入的意思。
>>> numbers = [1,2,3,5,6,7]
>>> numbers.insert(3,4)
>>> numbers
[1, 2, 3, 4, 5, 6, 7]
>>>
與extend方法一樣insert也可以實現分片賦值來實現。
>>> numbers
[1, 2, 3, 4, 5, 6, 7]
>>> numbers[4:4] = ['four']
>>> numbers
[1, 2, 3, 4, 'four', 5, 6, 7]
>>>
在說一個新的函數pop,作用是,移除列表中的一個元素,默認是最後一個,移除後並顯現移除的元素。
pop方法是唯一一個既能修改列表,又返回值得列表方法。
>>> numbers
[1, 2, 3, 4, 'four', 5, 6, 7]
>>> numbers.pop()
7
>>> numbers
[1, 2, 3, 4, 'four', 5, 6]
>>> numbers.pop(4)
'four'
>>> numbers
[1, 2, 3, 4, 5, 6]
>>>
在接受一個新的列表方法:remove,移除吧。
試驗下,感覺都好熟悉呢。移除列表中的第一個匹配上的值。
>>> x = ['to','be','or','not','to','be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
>>> x.remove('to')
>>> x
['or', 'not', 'to', 'be']
>>>
在學習一個新的方法。reverse方法,作用將列表中的元素反向存放。
實驗下吧:
>>> x = [1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]
>>>
如果需要一個序列進行反向迭代,可以使用reversed,這個函數返回的不是一個列表,而是一個迭代器對象。使用list函數把返回的對象轉換爲列表也是可以的。
>>> x
[1, 2, 3]
>>> list(reversed(x))
[3, 2, 1]
>>>
>>>
在學習一個列表方法:sort作用:在原位置對列表進行排序,是改變的原表。
>>> x = [1,2,3,47,3,2,5]
>>> x.sort()
>>> x
[1, 2, 2, 3, 3, 5, 47]
>>>
sort方法在着重說明下:因爲他修改的原列表數據,我想要一個不修改原列表的排序,要一個列表副本,是排序好的。這種怎麼實現:
>>> x = [1,2,3,47,3,2,5]
>>> y = x[:]
>>> y
[1, 2, 3, 47, 3, 2, 5]
>>> x
[1, 2, 3, 47, 3, 2, 5]
>>> y.sort()
>>> y
[1, 2, 2, 3, 3, 5, 47]
>>> x
[1, 2, 3, 47, 3, 2, 5]
>>>
有點累累了。。休息總結下。稍後繼續