python的list()列表數據類型的方法詳解


一、列表

列表的特征是中括號括起來的,逗號分隔每個元素,列表中的元素可以是數字或者字符串、列表、布爾值......等等所有類型都能放到列表里面,列表里面可以嵌套列表,可以無限嵌套

字符串的特征是雙引號括起來的

列表是有序的,是可以被修改的

S.append  S這個對象調用了list類里面提供的append方法,list中有很多方法,str里面也有很多方法

li = [1,2,3,4,66,77]   通過list類創建的對象,這個對象叫li
print (li)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

[1, 2, 3, 4, 66, 77] 

如下列表總共有6個元素,不管多少個嵌套的列表,在列表中的列表都算一個元素

li = [1, 2, "北約", 'beiye', ['ee',[1, 3, 5], 90], True]
print(li)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

[1, 2, '北約', 'beiye', ['ee', [1, 3, 5], 90], True]

1.列表通過索引(下標)的方式取值,0代表第一個,1代表第二個,2代表第三個

li = [1, 2, "北約", 'beiye', ['ee',[1, 3, 5], 90], True]
print(li[0])

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

1

2.列表通過切片的方式取值(中間用:分割),切片的結果也是列表

li[0:5] 表示大於等於0,小於5這個范圍(不包括第五個索引位置)

li = [1, 2, "北約", 'beiye', ['ee',[1, 3, 5], 90], True]
print(li[0:5])

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

[1, 2, '北約', 'beiye', ['ee', [1, 3, 5], 90]]

3.取值范圍是從開頭取到倒數第二個值

li = [1, 2, "北約", 'beiye', ['ee',[1, 3, 5], 90], True]
print(li[0:-1])

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

[1, 2, '北約', 'beiye', ['ee', [1, 3, 5], 90]] 

4.把全部元素都取出來

li = [1, 2, "北約", 'beiye', ['ee',[1, 3, 5], 90], True]
print(li[:])

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

[1, 2, '北約', 'beiye', ['ee', [1, 3, 5], 90], True]

經過測試發現 列表的索引和切片跟字符串str的使用方法一模一樣

5.用for循環把列表里面的值都取出來

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
for n in li:
    print(n)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

1

2

北約

beiye

['ee', [1, 3, 5], 90]

True

6.用while循環把列表里面的值都取出來

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
while True:
    print(li)
    break

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

[1, 2, '北約', 'beiye', ['ee', [1, 3, 5], 90], True]

7.鏈表的概念

字符串創建之后是不可以修改的,但是列表這個創建之后就可以被修改,看下圖

方框里面表示是內存的地址,mi這個字符串要想把i改成ai的話,在原來的基礎上是修改不了,只能新建一個,因為字符串在內存中是挨着的,列表就不一樣了,列表在內存中不是挨着的,但是每個元素在內存中都有一個鏈表,鏈表就是紅圈內的一個地址,就是因為有它所以系統知道下一個元素所在的位置,如果我新加一個元素的話,只需要修改下對應的鏈表就可以了,所以列表是創建好之后是可以修改的

8.既然能修改,我們就來修改下列表中的元素

     通過索引的方式來修改

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
li[1] = 120
print (li)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

[1, 120, '北約', 'beiye', ['ee', [1, 3, 5], 90], True]

     把元素改成一個列表試試看

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
li[1] = [11,22,33]
print (li)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

[1, [11, 22, 33], '北約', 'beiye', ['ee', [1, 3, 5], 90], True]

      通過切片的方式修改列表中的元素

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
li[1:3] = [20, 30]
print(li)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

[1, 20, 30, 'beiye', ['ee', [1, 3, 5], 90], True]

9.del  加上列表的元素的索引的位置 就可以刪除元素了,這是刪除元素的第一種方式

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
del li[1]
print (li)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

[1, '北約', 'beiye', ['ee', [1, 3, 5], 90], True] 

           通過切片的方式刪除指定的范圍內的元素,這是刪除元素的第二種方法

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
del li[2:5]
print(li)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

[1, 2, True]

10.通過in操作 判斷字符串或者是數字是否在列表元素里面,在里面則為True,不在里面就為假

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
v = 2 in li
print(v)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

True
li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
v = 200 in li
print(v)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

False

11.如何取列表元素里面的嵌套的列表中的元素,最終取到5這個元素

        先取出列表中的列表

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
S = li[4]
print (S)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

['ee', [1, 3, 5], 90]

取到列表之后在繼續往下面取,看上面的結果,5在這個列表中的第一個元素里面,ee為第第0個元素,所以我們下次取就是

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
S = li[4][1]
print (S)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

[1, 3, 5]

現在取到這里了,只剩下一個列表了,5這個元素是第二個元素,所以連接起來一起取就是

li = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
S = li[4][1][2]
print (S)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

5

12.把字符串轉換成列表應該怎么轉換,各種相互轉換

str 字符串

int 數字

list 列表

我們之前把數字轉換成字符串是這樣寫 S = str(a)  a是數字,S是轉換成的結果

我們之前把字符串換成數字是這樣寫   S = int(a)  a是字符串,S是轉換成的結果

把字符串換成列表就是               S = list(a)  a是字符串,S是轉換成的結果

a = "gouguoqi"
S = list(a)
print (S)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

['g', 'o', 'u', 'g', 'u', 'o', 'q', 'i'

也可以這樣寫

S = list("gouguoqi")
print(S)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

['g', 'o', 'u', 'g', 'u', 'o', 'q', 'i']

如果a是一個數字,就不能轉換成列表了,因為數字也不能被for循環

a = 123
S= list(a)
print (S

TypeError: 'int' object is not iterabl  數字對象不是可迭代的 
a = 123
for n in a:
    print (n)

TypeError: 'int' object is not iterabl   數字對象不是可迭代的

13.把列表轉換成字符串該怎么轉換

 

S = [1, 2, "北約", "beiye", ['ee', [1, 3, 5], 90], True]
a = str(S)
print (type(a),a)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

<class 'str'> [1, 2, '北約', 'beiye', ['ee', [1, 3, 5], 90], True]

雖然現在是字符串的類型了。但是這個結果不是我們想要,我們是想要這些字符串拼接起來

只能自己寫個for循環了

 (1)第一種方法,自己寫for循環,一個一個的循環,因為元素中既有數字,又有字母,所以得定義一個空,然后循環的時候轉換成str類型,才能進行相加,一個一個的循環,最    后把a打印出來

S = [1, 2, "北約", "beiye", "gouguoqi", True]
a = ""
for n in S:
    b = str(n)
    a = a + b        a+=b
print (a)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

12北約beiyegouguoqiTrue

  (2)第二種方法,前提是列表元素里面的元素都是字符串,可以用join的方法

S = [ "北約", "beiye", "gouguoqi"]
v = "".join(S)
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/li-way.py

北約beiyegouguoqi

二、list的方法

(list是一個list類,li是list類的一個對象)  li = [111,22,33,,44,55,66]

1. append(self, p_object)   英文意思就是  追加

p_object這個我們稱之為 參數 (self可以忽略)

list類的append方法,得傳一個參數才可以使用

這個方法的的作用就是在列表的末尾追加一個元素

 

為什么不能像字符串那樣把結果賦值為一個新的變量呢,因為之前不是說過了

字符串是不可以被修改的,只能賦值給一個新的變量,而列表是可以被修改的,所以可以直接進行修改,不用賦值到新的變量

S = ["北約", "beiye", "gouguoqi"]
v = S.append("miaoye")
print(v)
print(S)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

None

['北約', 'beiye', 'gouguoqi', 'miaoye']

也可以追加多次,也可以追加數字,可以追加字符串,可以追加列表

S = ["beiye", "gouguoqi"]
S.append("miaoye")
S.append(66)
S.append([11,22,33])
print(S)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['beiye', 'gouguoqi', 'miaoye', 66, [11, 22, 33]]

 

2. clear(self)

L.clear() -> None -- remove all items from L

把列表元素清空
L = ["beiye", "gouguoqi"]
L.clear()
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

[]
3. copy(self)  拷貝,淺拷貝

L.copy() -> list -- a shallow copy of L      shallow  [ˈʃæləʊ] 淺

 

拷貝一個一模一樣的列表出來

L = ["beiye", "gouguoqi"]
a =  L.copy()
print (L)
print (a)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['beiye', 'gouguoqi']

['beiye', 'gouguoqi']
4. count(self, value)   計數
計算一個指定的元素在列表里面出現了幾次

L.count(value) -> integer -- return number of occurrences of value

計算'66'這個字符串在列表元素中出現了幾次

L = ["11","22","33","222",22,22,22]
v = L.count('66')
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

0

計算'22'這個字符串在列表元素里面出現了幾次

L = ["11","22","33","222",22,22,22]
v = L.count('22')
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

1

 

計算22這個數字在列表元素里面出現了幾次

L = ["11","22","33","222",22,22,22]
v = L.count(22)
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

3
5. extend(self, iterable) 擴展

iterable 可迭代的,就是這個extend這方法的參數必須是可以迭代的才行(數字就不能迭代)

目前知道的 字符串可以迭代  列表可以迭代,元組也能迭代

L.extend(iterable) -> None -- extend list by appending elements from the iterable

 

把我們的的參數,在python內部通過for循環的方式,增加到原來的列表的末尾,作為n個新的元素增加到原來的列表里面,參數必須是可迭代的

 

而append則是把我們的參數當成是一個整體放到列表的末尾

L = ["11","22","33"]
L.extend(["44","55","66"])  相當於for i in ["44","55","66"]  L.append((i))
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['11', '22', '33', '44', '55', '66'

append追加的是一個整體

L = ["11","22","33"]
L.append(["44","55","66"])
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['11', '22', '33', ['44', '55', '66']]

如果extend的參數是一個字符串呢,我們看一下

L = ["11","22","33"]
L.extend("woai")           相當於for i in "woai"  L.append((i))
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['11', '22', '33', 'w', 'o', 'a', 'i']

如果extend的參數是一個元組呢,我們在看一下(黃色部分就是一個元組)

L = [11,22,"gouguoqi","aa"]
L.extend(("55",66,))
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/tuple.py

[11, 22, 'gouguoqi', 'aa', '55', 66] 

因為數字不是可迭代的,所以不行

L = ["11","22","33"]
L.extend(123456)
print (L

TypeError: 'int' object is not iterable
6. index(self, value, start=None, stop=None)

L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present

 

尋找指定的元素在列表的索引(下標)位置,找到第一個之后就不找了,可以指定尋找范圍,如果找不到程序就報錯了,跟字符串中的index方法類似,但是字符串中有find方法,找不到結果為-1,不知道列表為啥沒有find方法

 

L = ["11","55","22","33","55","gouguoqi"]
v = L.index("55")
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

1

 

L = ["11","55","22","33","55","gouguoqi"]
v = L.index("555")
print (v)

ValueError: '555' is not in list 
7. insert(self, index, p_object)

L.insert(index, object) -- insert object before index      index 索引,下標

 

必須指定2個參數 一個是index 一個是  object

在指定的索引之前插入你指定的參數作為列表的元素

L = ["11","55","gouguoqi"]
L.insert(2,"heihei")
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['11', '55', 'heihei', 'gouguoqi'
8. pop(self, index=None) 這是刪除元素的第三種方法,前面2種是del  索引   del li[1]
del 切片   del li[2:5]

L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.

 

刪除指定索引(下標)位置的元素,不加參數的話,默認刪除最后一個元素

 

刪除索引位置為1的元素

L = ["11","55","gouguoqi","22",66]
L.pop(1)
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['11', 'gouguoqi', '22', 66]

刪除倒數第二個元素

L = ["11","55","gouguoqi","22",66]
L.pop(-2)
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['11', '55', 'gouguoqi', 66]

不加參數,默認是刪除最后一個元素

L = ["11","55","gouguoqi","22",66]
L.pop()
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['11', '55', 'gouguoqi', '22']

還能獲取刪除的值

L = ["11","55","gouguoqi","22",66]
v = L.pop(2)
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

gouguoqi
9. remove(self, value) 這是刪除元素的第四種方法,前面3種方法
del 索引  del li[1]
del 切片  del li[2:5]
pop方法

刪除指定的一個元素,刪除第一個之后,就不再繼續往后找了

L.remove(value) -> None -- remove first occurrence of value.
Raises ValueError if the value is not present.

L = ["11", "55", "gouguoqi", "55", "22", 66]
L.remove("55")
print(L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['11', 'gouguoqi', '55', '22', 66]
10、reverse(self)   [rɪˈvɜ:s]   顛倒,反轉
把列表的元素重新進行倒序排列
L = [1,2,3,4,5,6,7,8]
L.reverse()
print (L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

[8, 7, 6, 5, 4, 3, 2, 1]
11. sort(self, key=None, reverse=False)  排序
不指定參數默認是升序排列

默認升序排列

L = ["www","taobao","china","abc"]
L.sort()
print(L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['abc', 'china', 'taobao', 'www']

降序排列

L = ["www","taobao","china","abc"]
L.sort(reverse=True)
print(L)

C:\python35\python3.exe D:/pyproject/day12列表/list-way.py

['www', 'taobao', 'china', 'abc']

12.列表里面的in操作,判斷元素是否在列表里面

L = [11,22,33,55,66]
v = 33 in L
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py

True

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM