列表
列表是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
注:由上可見兩種方法的執行結果相同