初識python(2)
引言
小夥伴們昨天已經講了一點python的資料型別了,今天我們來講講python剩下的資料型別以及運算子,一些小夥伴已經可以開始嘗試寫點簡單的小程式了。堅持就是勝利同志們,fighting!!!
資料型別
字典
相比於列表,字典可以精準的找到儲存的資料,字典使用花括號括起來的,括號記憶體放的是鍵值對,鍵值對之間用逗號隔開,鍵即key是用來描述值的。值即value是真正的資料,value可以是任意資料型別。因為字典是無序的,不能用索引來查詢資料,需要靠鍵(key)來進行引用資料,所以鍵是唯一的,當有多個同名鍵的時候,最後的會代替掉前面,值可以不唯一。
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} # 字典 tinydict['Name'] # 字典取值
字典鍵的特性
- 不允許同一個鍵出現兩次及以上。建立時如果同一個鍵被賦值兩次,最後面的那個會被記住。
- 鍵必須不可變。因此,鍵只能用字串、數字、元組來當。
集合
集合的功能很單一基本上是用來去重和關係運算,使用頻率很低。集合是用大括號括起來的,括號裡面裝的不是鍵值對。集合是一個無序不重複的元素序列,如果大括號定義空的資料那麼這個資料集的型別就是字典,建立空集合是用set()。
s = {1, 2, 3, 4 ,5} # 集合
s = set() # 空集合
元組
元組和列表相似,使用的是小括號,元組儲存的資料一般是隻給看不能改的。任意無符號的物件,以逗號隔開,預設為元組。小括號括起來,裡面可以放一個或多個元素,元素之間用逗號分隔,元素可以是任意資料型別。
注意:
t = (1, 2, 3, 4, 5) # 元組
t = 1, 2, 3, 4, 5 # 預設為元組
布林值
布林值只有兩種狀態,True意為正確,False意為錯誤。布林值是被用來在邏輯判斷中描述事物對錯的。除了0、None、一些空的資料集等外都是True。同時,布林值的變數名是以is開頭的,比如is_right、is_delete等。
使用者互動
與使用者互動主要是涉及到輸入和輸出,使用input來獲取使用者的輸入資料,在python3.x中,input獲取的資料都會轉換成字串型,而python2.x中只有raw_input和input幾乎一樣外,python2.x中的input在使用者輸入資料時,使用者輸入的是什麼資料型別,就是什麼資料型別。用print在計算機中將輸入資料打印出來。
age = input("請輸入你的年齡:") # 輸入18
print(type(age)) # str python3.x
age = input("請輸入你的年齡:") # 輸入18
print(type(age)) # int python2.x
age = raw_input("請輸入你的年齡:") # 輸入18
print(type(age)) # str python2.x
格式化輸出
格式化輸出主要知識就是佔位符,%s可以給任意資料佔位,%d只能給數字佔位。
name = 'king'
age = 18
gender = 'male'
print("我的名字叫%s,今年%s歲,性別%s" % (name, age, gender)) # 第一種格式化輸出
print(f"我的名字叫{name},今年{age}歲,性別{gender}") # 第二種格式化輸出,要求python3.6及以上。
運算子
乘 ==> *
除 ==> /
整除 ==> //
取餘 ==> %
等於 ==> ==
增量賦值
增值賦值是為了少寫一個變數名,增值賦值相比一般賦值在記憶體中具有空間佔用優勢,數學賦值計算中,+有合併的用法,list1 = list1 + list2會改變list1的地址,但list1 += list2不會改變list1的地址。
x += 100 # x = x + 100
x -= 100 # x = x - 100
x /= 100 # x = x / 100
x *= 100 # x = x * 100
鏈式賦值
鏈式賦值沒什麼好講的直接上過程
x = y = z = 100
'''
上述鏈式賦值等價於
x = 100
y = x
z = x
鏈式賦值的原理是,找一箇中間變數先指向變數值,然後讓x,y,z都指向temp指向的變數值。
temp = 100
x = temp
y = temp
z = temp
'''
交叉賦值
繼續上過程,但是記住交叉賦值可以多個變數,但是為了防止被繞暈,建議數量不要太多。
m = 10
n = 100
m, n = n, m
解壓賦值
在正常情況下,解壓賦值需要注意變數的個數要和列表的元素個數一樣。
ls = [12, 32, 51, 62, 36, 78]
age1, age2, age3, age4, age5,age6 = ls # 左右數量要一致
'''打破數量限制'''
a, b, *_ = ls # a, b, *_ ==>12, 32, [51, 62, 36, 78]
a, *_, b = ls # a, b, *_ ==>12, [32, 51, 62, 36], 78
'''
星號後面可以是任何符合變數命名標準的變數名,當用單獨下劃線作為變數名時意味著,指向的值暫時用不到,星號的意思就是取暫時不要的值賦值給星號後面的變數名,並以列表的形式體現。
'''
邏輯運算子
and即與,連線多個條件必須都滿足才為True,or即或,連線多個條件必須都不滿足才為False,not即非,用來翻轉條件的,True翻轉後為False,False翻轉後為True。
注意:三個邏輯運算子之間是有優先順序的,not>and>or,但是一般情況下,我們在寫邏輯運算時都會用小括號去強制邏輯順序。
3 > 2 and 10 < 100 and 1 > -1 # True
3 < 2 or 10 > 100 or 1 < -1 # False
not True # False
成員運算子
成員運算子用於判斷個體是否在某個資料群內,用in。是否不在用not in。
ls = ['king', 'guido', 'java', 'JavaScript']
print('king' in ls) # True
print('king' not in ls) # False
身份運算子
身份運算子is用於判斷兩個資料在記憶體中的地址是否一樣,即id是否一樣。==用於判斷兩個值是否一樣。python為了避免頻繁的建立和銷燬物件,python採用了快取池技術,[-5,257),在快取池中的數值不管怎麼賦值id都是一樣,當然把大於257的值賦值給一個變數名,再把該變數名指向的變數值賦值給另一個變數名,兩個變數名地址一樣。
a = 1
b = 1
print(a is b) # True
print(a == b) # True
a = 257
b = 257
print(a is b) # False
print(a == b) # True