python基礎二

這一關,我們就會接觸兩種新的數據類型——列表和字典,你會發現,它們比我們學過的“整數、浮點數、字符串”更加高級,更有“包容性”。
爲什麼這麼說呢?前面學的幾種類型,每次賦值只能保存一條數據。如果我們需要使用很多數據的時候,就會很不方便。
而列表和字典的作用,就是可以幫我們存儲大量數據,讓計算機去讀取和操作。

列表(list)的代碼格式:
student = ['張三','李四']
列表名 賦值號 中括號 逗號
一個列表需要用中括號[ ]把裏面的各種數據框起來,裏面的每一個數據叫作“元素”。每個元素之間都要用英文逗號隔開。
列表很包容,各種類型的數據(整數/浮點數/字符串)無所不能包。
從列表提取單個元素
這就涉及到一個新的知識點:偏移量。列表中的各個元素,好比教室裏的某排學生那樣,是有序地排列的,也就是說,每個元素都有自己的位置編號(即偏移量)。
1.偏移量是從0開始的,而非我們習慣的從1開始;2.列表名後加帶偏移量的中括號,就能取到相應位置的元素。
print(student[0])表示取第一個數據

從列表中取出多個元素
需要用到切片方式
如:
list2 = [5,6,7,8,9]
print(list2[:])
print(list2[2:])
print(list2[:2])
print(list2[1:3])
print(list2[2:4])
原則是 :左右空,取到頭;左要取,右不取
前半句:冒號左邊空,就要從偏移量爲0的元素開始取;右邊空,就要取到列表的最後一個元素。
後半句:冒號左邊數字對應的元素要拿,右邊的不動
另外,我們要注意一個細節:偏移量取到的是列表中的元素,而切片則是截取了列表的某部分,所以還是列表

給列表增加/刪除元素
過了一週,你正上着課呢,教導主任突然領了一個新學生“小美”,說是轉校生,要插到你們班。這時,我們就需要用到append()函數給列表增加元素,append的意思是附加,增補。

用append()給列表增加元素,每次只能增加一個元素。
student = ['張三','李四','塗維']
student.append('凃雙')
append函數並不生成一個新列表,而是讓列表末尾新增一個元素。而且,列表長度可變,理論容量無限,所以支持任意的嵌套

刪除元素
students = ['×××','小紅','小剛','小美']
del students[1]
print(students)

事實上del語句非常方便,既能刪除一個元素,也能一次刪除多個元素(原理和切片類似,左取右不取)。

我們先介紹一下列表中的pop()函數,用於移除列表中的一個元素(默認最後一個元素),並且返回該元素的值。
可以將其理解爲提取和刪除的融合:①提取:取到元素,對列表沒有影響;②刪除:刪除列表的元素。
而移除,則是同時做到取到元素,並且刪除列表中的元素。
students = ['×××', '小紅', '小剛']
for i in range(3):
student1 = students.pop(0)
students.append(student1)
print(students)

數據類型:字典
衆所周知,一個老師的日常就是出卷、改卷。這次期中考呢,×××、小紅、小剛分別考了95、90和90分。
假如我們還用列表來裝數據的話,我們需要新創建一個列表來專門放分數,而且要保證和姓名的順序是一致的,很麻煩。
所以類似這種名字和數值(如分數、身高、體重等)兩種數據存在一一對應的情況,用第二種數據類型——“字典”(dictionary)來存儲會更方便

scores = {'×××':95,'小紅':90,'小剛':90}
字典和列表有3個地方是一樣的:1.有名稱;2.要用=賦值;3.用逗號作爲元素間的分隔符

而不一樣的有兩處:1.列表外層用的是中括號[ ],字典的外層是大括號{ };
2.列表中的元素是自成一體的,而字典的元素是由一個個鍵值對構成的,用英文冒號連接。如'×××':95,其中我們把'×××'叫鍵(key),95叫值(value)。

這樣唯一的鍵和對應的值形成的組合,我們就叫做【鍵值對】,上述字典就有3個【鍵值對】:'×××':95、'小紅':90、'小剛':90
如果不想口算,我們可以用len()函數來得出一個列表或者字典的長度(元素個數),括號裏放列表或字典名稱

student = ['張三','李四','塗維']
print(len(student))

這裏需要強調的是,字典中的鍵具備唯一性,而值可重複。也就是說字典裏不能同時包含兩個'×××'的鍵,但卻可以有兩個同爲90的值。

現在,我們嘗試將×××的成績從字典裏打印出來。這就涉及到字典的索引,和列表通過偏移量來索引不同,字典靠的是鍵。
scores = {'×××': 95, '小紅': 90, '小剛': 90}
print(scores['×××'])
這便是從字典中提取對應的值的用法。和列表相似的是要用[ ],不過因爲字典沒有偏移量,所以在中括號中應該寫鍵的名稱,即字典名[字典的鍵]。

給字典增加/刪除元素

刪除字典裏鍵值對的代碼是del語句del 字典名[鍵],而新增鍵值對要用到賦值語句字典名[鍵] = 值。

列表和字典的不同點
一個很重要的不同點是列表中的元素是有自己明確的“位置”的,所以即使看似相同的元素,只要在列表所處的位置不同,它們就是兩個不同的列表

而字典相比起來就顯得隨和很多,調動順序也不影響。因爲列表中的數據是有序排列的,而字典中的數據是隨機排列的。
這也是爲什麼兩者數據讀取方法會不同的原因:列表有序,要用偏移量定位;字典無序,便通過唯一的鍵來取值。
我們先來看第一個共同點:在列表和字典中,如果要修改元素,都可用賦值語句來完成

第二個共同點其實之前已經略有提及,即支持任意嵌套。除之前學過的數據類型外,列表可嵌套其他列表和字典,字典也可嵌套其他字典和列表

students = [['×××','小紅','小剛','小美'],['小強','小蘭','小偉','小芳']]
當我們在提取這種多級嵌套的列表/字典時,要一層一層地取出來,就像剝洋蔥一樣:
下面,介紹一種新的數據類型:元組(tuple)。 可以看到:元組和表格很相似,不過,它是用小括號來包的。
元組和列表都是序列,提取的方式也是偏移量,如 tuple1[1]、tuple1[1:]。另外,元組也支持任意的嵌套。

tuple1 = ('A','B')
list2 = [('A','B'),('C','D'),('E','F')]
print(tuple1[0])
print(list2[1][1])

輸出 A
D

循環
要實現“重複、自動地執行代碼”,有兩種循環語句可供我們選擇使用:一種是for...in...循環語句,另一種是while循環語句。

比如班主任點名的例子:
student = ['黨志文','浦欣然','羅鴻朗','姜信然','居俊德','宿鴻福','張成和','林景輝','戴英華','馬鴻寶','鄭翰音','厲和煦','鍾英縱','盧信然','任正真','翟彭勃','蔣華清','雙英朗','金文柏','饒永思','堵宏盛','濮嘉澍','戈睿慈','邰子默']
for i in student:
print(i+'在不在?')
列表,字典,字符串都可以充當此處的student
除了列表,字典,字符串三種數據類型,我們還可以遍歷其他的數據集合。比如和for循環常常一起搭配使用的:range() 函數
num1=range(1,10)
for i in num1: 取值不包括10 從1到9 使用range(x)函數,就可以生成一個從0到x-1的整數序列。

print(i)

for i in range(3):
print('我很棒')

有了range()函數之後,當你想把一段代碼固定重複n次時,就可以直接使用for i in range(n)解決問題。

range()函數還有一種用法,我們來直接運行體驗一下:

for i in range(0,10,3):
print(i)

這裏range(0,10,3)的意思是:從0數到9(取頭不取尾),數數的間隔爲3

while循環
就是在一定條件下,執行一些動作。
如:
a = 0
while a < 5:
a = a + 1
print(a)

for循環和whlie循環最大的區別在於【循環的工作量是否確定】,for循環就像空房間依次辦理業務,直到把【所有工作做完】才下班。但while循環就像哨卡放行,【滿足條件就一直工作】,直到不滿足條件就關閉哨卡
所以說,當我們【工作量確定】的時候,我們就可以讓for循環來完成重複性工作。反之,要【工作量不確定時】可以讓while循環來工作:

用數值做判斷 ---------》布爾值 True False 計算機的邏輯判斷結果要不爲真 True 要不爲假 False
if False:
print('if False')

if True:
print('if True')

print(5>3) 輸出爲True 即爲真
while True -------------->此時就進入了死循環 ,因爲條件一直成立
print('ok')

直接用數值做運算
if 1: --------->其實,整數1在這裏就是作爲一個條件,被判斷爲真(True)。這就是數值本身作爲一個條件,被判斷真假的情況。

print('ok')

print(bool(1))

在Python中被判定爲假,比如False、0、'' (空字符串)、空列表、none等等。假的東西是有限的,那麼除了假的,其他就都是真的。比如上一個例子中出現的整數1,就是真的。
至於None,它代表的是【空值】,自成一派,數據類型是NoneType。要注意它和0的區別,0是整數0,可並非什麼都沒有
我們可以使用bool()函數來查看一個數據會被判斷爲真還是假。這個函數的用法與type()函數相似(還有印象吧~),在bool()函數括號中放入我們想要判斷真假的數據,然後print出來即可。

布爾值之間的運算
and、or、not、in、not in五種運算

in】的意思是“判斷一個元素是否在一堆數據之中”,【not in】反之

list = [1,2,3,4,5]
a = 1

做一次布爾運算,判斷“a是否在列表list之中”

print(bool(a in list))
print(bool(a not in list))
如果涉及到的數據集合是字典的話,【in】和【not in】就可以用來判斷字典中是否存在某個【鍵】:

i = 5
while i:
print('把這句話打印5遍')
i = i-1

這種實現方式比用下面要好,計算次數減少了
i = 0
while i<5:
print('把這句話打印5遍')
i = i+1
循環裏的四種新語句
我們先來看看break語句。break的意思是“打破”,是用來結束循環的,一般寫作if...break。它的寫法長這樣:

break語句搭配for循環

for...in...:
...
if ...:
break

break語句搭配while循環

while...(條件):
...
if ...:
break
在這裏,if...break的意思是如果滿足了某一個條件,就提前結束循環。記住,這個只能在循環內部使用。

小小地提醒你,break前面一共縮進了【8個空格】

continue語句

continue的意思是“繼續”。這個子句也是在循環內部使用的。當某個條件被滿足的時候,觸發continue語句,將跳過之後的代碼,直接回到循環的開始。

pass語句

pass語句就非常簡單了,它的英文意思是“跳過”。
a = int(input('請輸入一個整數:'))
if a >= 100:
pass
else:
print('你輸入了一個小於100的數字')

這個代碼的意思是:當a>=100的時候,跳過,什麼都不做。其他情況,也就是a<100的時候,執行一個print語句。

else語句----》用在循環語句後
最後一種else語句,我們在條件判斷語句見過【else】,其實,else不但可以和if配合使用,它還能跟for循環和while循環配合使用

用一句話總結,當循環中沒有碰到break語句,就會執行循環後面的else語句,否則就不會執行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章