列表:在python中,如果存儲多個數據用列表。
列表是一個有序的,可修改,元素以逗號分隔,以中括號包圍的序列。
列表的索引與字符串索引類似,但不完全相同,列表可以修改,所以我們可以通過列表索引修改列表。列表內元素是可變的,列表中的元素可以重復。
列表的定義:
name = [] #空列表
我們可以通過**type()**來查看變量的類型。
type(name)
<class 'list'>
這裡可以看到,name就是一個列表,一個空列表。接下來,我們可以向列表中添加元素,我們先來看下列表的內存地址,使用id()函數可查看列表中保存元素所在的內存地址,我們先重新定義一個含有元素的列表。
name = []
a = id(name)
print(a)
name.append('jk')
b = id(name)
print(b)
name.insert(1,'hi')
c = id(name)
print(c)
結果:
1737781446984
1737781446984
1737781446984
可以看出,向列表中添加元素,列表的內存地址沒有變化,所以,用列表就可以防止內存占用過多,可以節省內存。
向列表中添加元素:
name = ['jake','marry','hery','lucy',10]
name.append('hu')
print(name)
['jake', 'marry', 'hery', 'lucy', 10, 'hu']
在這裡也發現了一個問題,如果是直接在print()裡面打印添加的列表,就會出現這樣的問題:
第一種:
name = ['jake','marry','hery','lucy',10]
name1 = name.append('hu')
print(name1)
None
第二種:
name = ['jake','marry','hery','lucy',10]
print(name.append('hu'))
None
為什麼不能在更改的時候將列表保存到一個變量裡面呢?
因為這個是往列表裡面添加元素,列表的值發生了改變,所以不能直接打印方法,而是先添加,再打印才符合對應的邏輯。而之所以會輸出None,因為打印的時候,name.append並沒有返回值,所以打印出來的就是None。
name = ['jake','marry','hery','lucy',10]
name.insert(0,'anna')
print(name)
['anna', 'jake', 'marry', 'hery', 'lucy', 10]
name = ['jake','marry','hery','lucy',10]
name1 = [1, 2, 3]
name.extend(name1)
print(name)
['jake', 'marry', 'hery', 'lucy', 10, 1, 2, 3]
刪除列表中的元素:
1,pop 彈出,返回並刪除指定索引位上的數據,默認刪除索引為-1的數據;我們也可以用一個變量來存儲通過函數pop()刪除的值,如下:
name = ['jake','marry','hery','lucy',10]
name1 = name.pop()
print(name)
print(name1)
['jake', 'marry', 'hery', 'lucy']
10
pop()也可以刪除指定元素,只需指出對應的索引:
name = ['jake','marry','hery','lucy',10]
name1 = name.pop(2)
print(name)
print(name1)
['jake', 'marry', 'lucy', 10]
hery
2,remove 從左往右刪除一個指定的元素;
name = ['jake','marry','hery','lucy',10]
name.remove('marry')
print(name)
['jake', 'hery', 'lucy', 10]
3,del 刪除整個列表或列表的數據,del是Python內置功能,不是列表獨有的;
name = ['jake','marry','hery','lucy',10]
del name[0]
print(name)
['marry', 'hery', 'lucy', 10]
列表中元素修改:
直接賦值修改:
name = ['jake','marry','hery','lucy',10]
name[0] = 'petter'
print(name)
['petter', 'marry', 'hery', 'lucy', 10]
列表中元素的查找:
1,count 計數,返回要計數的元素在列表當中的個數;沒有就返回0。
name = ['jake','marry','hery','lucy',10]
print(name.count('lucy'))
1
2,index 查找,從左往右返回查找到的第一個指定元素的索引,如果沒有找到,報錯;注意:列表沒有find查找方法。
name = ['jake','marry','hery','lucy',10]
print(name.index('lucy'))
3
3,in 查找元素是否在列表中,在輸出true,否則false;
name = ['jake','marry','hery','lucy',10]
'lucy' in name
True
name = ['jake','marry','hery','lucy',10]
'peter' in name
False
列表的排序:
1,reverse 順序倒序
name = ['jake','marry','hery','lucy',10]
name.reverse()
print(name)
[10, 'lucy', 'hery', 'marry', 'jake']
*2,sort 按照ascii碼表順序進行排序
list()函數:
list(),以一個序列作為參數並把它轉換為列表,如果參數是list,那麼該參數就會被原樣返回。如果定義了list這個變量,再用list()這個函數就會報錯。
num = 'asdfg'
list(num)
['a', 's', 'd', 'f', 'g']
num = 'asdfg'
num1 = list(num)
print(num1)
''.join(num1)#將轉換成列表的字符串重新轉換成字符串
['a', 's', 'd', 'f', 'g']
'asdfg'
列表切片:
列表切片同字符串切片一樣。包頭不包尾
name = ['jake','marry','hery','lucy',10]
print(name[0:2])
['jake', 'marry']
name = ['jake','marry','hery','lucy',10]
print(name[0:4:2])
['jake', 'hery']
若步長為負,就是將列表順序反過來,但是元素的下標並沒有變,也就是說,反過來之後的第一個元素的下標就是初始列表的最後一個元素的下標。同樣,name[startstep]的起始位和結束位同樣倒序。