python中的list、tuple和dictionary

帥胡不帥發表於2019-01-17

列表

列表是python中最基本的資料結構之一,並且列表的資料項不需要具有相同的資料型別,建立一個列表,只需把逗號分隔的不同資料項使用方括號括起來即可。具體的定義式如下:

list=[`變數1`,`變數2`,`變數3`......] #變數可以是字串也可以是數字,是數字時可以直接去掉引號

我們在使用列表時可以對列表進行增(append)、刪(remove、del、pop)、索引(index)、倒轉(reverse)、拼接(extend)、清空(clear)、插入(insert)、複製(copy)、統計元素次數(count)等操作。

增(append)

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list.append(`Sheer`)
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[`Alex`, `Leigou`, `Rock`, 1, 2, 3, `Sheer`]

注:成功將字串`Sheer`插入到列表中

刪(remove、del、pop)

刪除時可以根據條件的不同選擇remove、del或pop中的任意一個,具體事例如下:

remove()可以刪除括號內指定的字元或字串,但是無法根據列表中的下標進行刪除操作,具體如下:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list.remove(`Leigou`)
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[`Alex`, `Rock`, 1, 2, 3]

Del()可以根據列表中的下標位完成刪除工作,具體事例如下:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
del list[4]
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[`Alex`, `Leigou`, `Rock`, 1, 3]

pop()也是根據括號中的下標位完成刪除操作的,當括號內沒有寫下標位時會自動預設刪除列表中的最後一個元素,具體事例如下所示:

包含下標位:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list.pop(2)
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[`Alex`, `Leigou`, 1, 2, 3]

不包含下標位:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list.pop()
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[`Alex`, `Leigou`, `Rock`, 1, 2]

索引(index)

索引(index)通過索引列表中的字元或字串,可以查詢對應的下標,具體例項如下:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
print(list.index(`Leigou`))

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

1

插入(insert)

插入(insert)可以在指定的下標位處插入想要插入的元素,具體例項如下:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list.insert(2,`Sheer`)
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[`Alex`, `Leigou`, `Sheer`, `Rock`, 1, 2, 3]

統計元素次數(count)

統計元素次數(count)可以統計列表中某個元素出現的次數,具體例項如下:

list=[`l`,`h`,`l`,`g`,`f`,`l`]
print(list.count("l"))

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

3

拼接(extend)

拼接(extend)可以將兩個列表

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list1=[4,5,6,7]
list.extend(list1)
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[`Alex`, `Leigou`, `Rock`, 1, 2, 3, 4, 5, 6, 7]

倒轉(reverse)

倒轉(reverse)主要實現列表從前往後的反轉,具體例項如下:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list.reverse()
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[3, 2, 1, `Rock`, `Leigou`, `Alex`]

清空(clear)

清空(clear)主要是將列表中的元素清空,但仍然保留列表,即列表依然存在只是裡面不在具有任何元素,具體例項如下:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list.clear()
print(list)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[]

複製(copy)

複製(copy)主要的功能是實現列表的複製,具體例項如下:

list=[`Alex`,`Leigou`,`Rock`,1,2,3]
list1=list.copy()
print(list)
print(list1)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

[`Alex`, `Leigou`, `Rock`, 1, 2, 3]

[`Alex`, `Leigou`, `Rock`, 1, 2, 3]

 

元祖(tuple)

Pyhton中的元祖與列表類似,不同之處在於元祖使用小括號,列表使用中括號;元祖的元不能進行修改,相較於列表,元祖的可操作空間比較小,只有兩個方法,即count和index。

元祖的索引(index)方法如下:

names=(`Alex`,`Leigou`,`Rock`) #下標位是從0開始的
print(names.index("Leigou"))

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

1

注:主要用於查詢元素的下標位

元祖下標位的使用方法:

names=(`Alex`,`Leigou`,`Rock`) #下標位是從0開始的
nums=(1,2,3,4,5)
print(“names[1]:”,names[1])
print(“nums[1:3]:”,nums[1:3]) #對nums進行擷取切片
print(“nums:”,nums[:])#列印所有的元祖元素可以使用nums[:]

執行結果:

D:Anaconda3python.exe
D:/PycharmProjects/pythonz/day2/z.py

names[1]:
Leigou

nums[1:3]:
(2, 3)

nums:
(1, 2, 3, 4, 5)

元祖無法進行修改,但是可以進行連線組合,具體程式如下:

names=(`Alex`,`Leigou`,`Rock`) #下標位是從0開始的
nums=(1,2,3,4,5)
print("names+nums:",names+nums)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

names+nums: (`Alex`, `Leigou`, `Rock`, 1, 2, 3, 4, 5)

元祖無法進行刪除內部元素的操作,但是可以刪除整個元祖,具體程式如下:

names=(`Alex`,`Leigou`,`Rock`) #下標位是從0開始的
print(names)
del names
print(names)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

Traceback (most recent call last):

(`Alex`, `Leigou`, `Rock`)

  File “D:/PycharmProjects/pythonz/day2/z.py”, line 11, in <module>

    print(names)

NameError: name `names` is not defined

注:刪除前可以列印出names,但是當用del刪除names後再列印names時以報錯說names沒有定義

元祖的count方法如下:

names=(`Alex`,`Leigou`,`Rock`,1,2,1,1) #下標位是從0開始的
print(names.count(1))

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

3

注:主要用於統計某個字元的個數,更加直觀的例子如下:

str=("ldlasledlf")
print(str.count("l"))

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/z.py

4

 

字典(Dictionary)

字典(Dictionary)是另一種可變容器型別,且可儲存任意型別物件。字典的沒個鍵值key=>value對用冒號(:)分隔每個鍵值用逗號(,)分隔,整個字典包含在花括號中,格式如下所示:

d={key1:value1,key2:value2}

鍵一般是唯一的,如果重複最後的一個鍵值對會替換前面的,值不需要唯一,例項如下:

dict={`Name`:`Leigou`,`age`:`24`,`sex`:`Boy`}
print("Name:",dict[`Name`])
print(`age:`,dict[`age`])

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/1.py

Name: Leigou

age: 24

向子典新增新內容的方法是增加新的鍵/值,修改或刪除已有鍵/值對例項如下:

dict={`Name`:`Leigou`,`age`:`24`,`sex`:`Boy`}
dict[`num`]=`201822362014236` #新增新的鍵值對
dict[`sex`]=`girl` #修改性別資訊
print(dict)
print(`sex:`,dict[`sex`])

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/1.py

{`Name`: `Leigou`, `age`: `24`, `sex`: `girl`, `num`: `201822362014236`}

sex: girl

字典裡的元素能進行單一的刪除也能清空字典,顯示刪除一個字典鍵值用del命令,清空字典用clear命令。

刪除鍵值(del)

dict={`Name`:`Leigou`,`age`:`24`,`sex`:`Boy`}
del dict[`sex`] #刪除字典中sex的鍵值
print(dict)
print(`sex:`,dict[`sex`])

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/1.py

{`Name`: `Leigou`, `age`: `24`}

Traceback (most recent call last):

  File “D:/PycharmProjects/pythonz/1.py”, line 4, in <module>

    print(`sex:`,dict[`sex`])

KeyError: `sex`

注:將sex的鍵值刪除以後列印結果顯示字典中已無sex的鍵值,並且再單獨輸出sex的值時系統將報錯。

清空字典(clear)

dict={`Name`:`Leigou`,`age`:`24`,`sex`:`Boy`}
dict.clear() #刪除字典中sex的鍵值
print(dict)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/1.py

{}

注:清空字典並非刪除整個字典,而是將字典中的元素清空,清空後我們仍然可以在字典中新增新的鍵值。

 

小擴充:字典的迴圈可以用以下兩種for迴圈語句,例項如下:

info={
    `stu1101`:`Jinlei`,
    `stu1102`:`Xule`,
    `stu1103`:`Chunchao`,
}
for i in info : #字典迴圈方法1
    print(i,info[i])
print("="*30)
for k,v in info.items() :#字典迴圈方法2
    print(k,v)

執行結果:

D:Anaconda3python.exe D:/PycharmProjects/pythonz/day2/dictionary.py

stu1101 Jinlei

stu1102 Xule

stu1103 Chunchao

==============================

stu1101 Jinlei

stu1102 Xule

stu1103 Chunchao

注:由上可見兩種方法的執行結果相同

相關文章