01 - 資料型別
資料型別
Number(數字)
int(整形)
通常被稱為是整型或整數,是正或負整數,不帶小數點。
# 變數賦值 a = 100 # 多個變數的賦值 a = b = 100
float(浮點型)
浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
a = 3.45
bool(布林)
# 內建函式bool(),將其他資料型別轉換為bool型別 a = bool("") b = True c = False
complex(複數)
複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型
a = 4+5.6j
b = complex(4,4.5)
型別轉換函式
函式 | 描述 |
int(x) | 將x轉換為一個整數 |
float(x ) | 將x轉換到一個浮點數 |
ord(x ) | 將一個字元返回對應的 ASCII 數值 |
bin() | 將十進位制轉換成二進位制 |
oct(x ) | 將十進位制轉換成八進位制 |
hex() | 將十進位制轉換成十六進位制 |
進製表示方式
>>> 0b1010 #0b表示二進位制 10 >>> 0o12 #0o表示八進位制 10 >>> 0x0A #0x表示十六進位制 10
運算子
運算子 | 描述 |
& | 按位與運算子:都為1,則該位的結果為1,否則為0 |
| | 按位或運算子:有一個為1時,結果位就為1。 |
^ | 按位異或運算子:相異時為1。 |
~ | 按位取反運算子:對資料的每個二進位制位取反,即把1變為0,把0變為1。~x 類似於 -x-1 |
<< | 左移動運算子:由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。 |
>> | 右移動運算子:把">>"左邊的運算數的各二進位全部右移若干位,">>"右邊的數指定移動的位數 |
% | 求餘運算 |
// | 整除運算 |
運算示例
''' 0000 0101 5 0000 1000 8 ''' print(5^8) #13 print(5|8) #13 print(5&8) #0 print(5>>1) #2 print(~100) #-101 加1後取反
注意:%和//運算,如果結果是負數則進行向下圓整。
>>> 10%3 1 >>> 10%-3 -2 >>> 10//3 3 >>> 10//-3 -4
數學函式(math)
函式 | 描述 |
abs(x) | 返回數字的絕對值,如abs(-10) 返回 10 |
round(x [,n]) | 返回浮點數x的四捨五入值,如給出n值,則代表舍入到小數點後的位數。 |
pow(x, y) | x**y 運算後的值。 |
max(x1, x2,...) | 返回給定引數的最大值,引數可以為序列。 |
min(x1, x2,...) | 返回給定引數的最小值,引數可以為序列。 |
math.ceil(x) | 向上取整,如math.ceil(4.1) 返回 5 |
math.floor(x) | 向下取整,如math.floor(4.9)返回 4 |
math.sqrt(x) | 返回數字x的平方根 |
保留兩位小數
# 保留兩位小數自動四捨五入 a = 2.455 #方案一 b = "%0.2f"%a #字串 c = float(b) print(c) #結果:2.46 #方案二 d = round(a,2) #float print(d) #結果:2.46
注意:round()如果距離兩邊一樣遠,會保留到偶數的一邊。比如round(0.5)和round(-0.5)都會保留到0,而round(1.5)會保留到2。
String(字串)
str(字串)
在Python3中,所有的字串都是Unicode字串。
u/U:表示unicode字串 (預設)
r/R:非轉義的原始字串
b:字首代表的就是bytes
#轉換為unicode a = b'hello everyone'.decode("utf-8") print(a) #hello everyone #轉換為bytes b =a.encode("utf-8") print(b) #b'hello everyone'
字串的切片
#切片(顧頭不顧尾,步長) msg='hello world' print(msg[0:4]) #hell print(msg[0:4:2]) #hl print(msg[0:-2]) #hello wor
切片倒置字串
a = 'hello everyone' b = a[::-1] print(b)
注意:步長為正,則從左到右切片,如果起始位置索引大於結束位置索引,則切片為空;步長為負,則從右到左切片,如果起始位置索引小於結束位置索引,則切片為空。
字串常用操作
方法 | 描述 |
find() | mystr.find(str, start, end),檢測 str 是否包含在 mystr中,如果是返回開始的索引值,否則返回-1 |
count() | mystr.count(str, start, end),返回 str在start和end之間 在 mystr裡面出現的次數 |
replace() | mystr.replace(str1, str2, 2),把 mystr 中的 str1 替換成 str2,如果 count 指定,則替換不超過 count 次 |
strip() | 移除字串兩邊的字元和換行符,預設移除空格 |
split() | mystr.split(" ", 2),以空格為分隔符切片 mystr,返回列表 |
startwith() | str.startwith("a"),判斷字串是否以指定字元為開始,返回布林值 |
isdigit() | "123".isdigit(),判斷是否由數字組成的字串,只能判斷純數字的字串 |
join() | string.join(seq),以 string 作為分隔符,將 seq 中所有的元素(的字串表示)合併為一個新的字串 |
List(列表)
方法 | 描述 |
len(list) | 列表元素個數 |
max(list) | 列表中最大的數 |
list.count(obj) | 列表中統計的物件 |
list.extend(seq) | 在列表末尾一次性追加另一個序列中的多個值 |
list.insert(index, obj) | 將元素插入列表 |
list.pop([index=-1]]) | 移除列表中的一個元素(預設最後一個元素),並且返回該元素的值 |
list.remove(obj) | 移除列表中某個值的第一個匹配項 |
list.reverse() | 反向列表中元素 |
list.sort(key=None, reverse=False) | 對原列表進行排序 |
list.clear()清空列表 | 清空列表 |
列表去重
# 集合,型別是set,沒有重複的元素 a = {1, 3, 4, 5, 3, 1, 2, 4} print(a, type(a)) # 列表去重 a = [1, 3, 4, 5, 3, 1, 2, 4] # 方法一 b = [] for i in a: if i not in b: b.append(i) b.sort() print(b) # 方法二 s = set(a) c = list(s) print(c) #去重不亂序 d = list(set(a)) d.sort(key=a.index) print(d)
字串轉換為list
a = "dwqrdfqwe" b = list(a) print(b) #['d', 'w', 'q', 'r', 'd', 'f', 'q', 'w', 'e']
# 生成如下列表 # [[0,0,0,0,0],[0,1,2,3.4],[0,2,4,6,8],[0,3,6,9,12]] l = [] for a in range(4): l1 = [] for b in range(5): l1.append(b*a) l.append(l1) print(l) ret = [[i*j for j in range(5)] for i in range(4)] # print(ret) print('-'*50) list1 = [21,32,12,56,23] # a = sorted(list1,reverse=True) # list1.sort(reverse=True) list1.reverse() # 翻轉 print(list1) print(list1.index(21)) import random random.shuffle(list1) print(list1) print('-'*50) l = [1,2,3,4,56,7] ret = "+".join(str(x) for x in l) print(ret)案例
元組(tuple)概念
元組就是一個不可變的列表,用於存放多個值,當存放的多個值只有讀的需求沒有改的需求時用元組最合適。
Dict(字典)
方法 | 描述 |
dict.clear() | 刪除字典內所有元素 |
dict.get(key, default=None) | 返回指定鍵的值,如果值不在字典中返回預設值 |
dict.setdefault(key, default=None) | 和get()方法類似, 如果鍵不已經存在於字典中,將會新增鍵並將值設為預設值 |
dict.items() | 以列表返回可遍歷的(鍵, 值) 元組陣列 |
dict.keys() | 獲取字典中的鍵,需要list()轉換 |
dict.values() | 獲取字典中的值,需要list()轉換 |
del dict[key] | 刪除鍵 |
dict.pop(key) | 返回被刪除的value |
dict.popitem() | 隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對) |
Set(集合)
新增元素
# 空集合的建立 a = set() #新增元素 a.update([11,22,33]) a.add(12) print(a) #{33, 11, 12, 22}
刪除元素
# 刪除元素,元素不存在會出異常 a = {33, 11, 12, 22} a.remove(11) a.discard(22) # 隨機刪除 a.pop() print(a) #{12}
集合運算
a = set('abracadabra') print(a) #{'r', 'd', 'c', 'b', 'a'} b = set('aadcazam') print(b) #{'m', 'z', 'd', 'c', 'a'} #交集,集合a和b共有的元素 print(a & b) #{'a', 'd', 'c'} #集合a中特有的元素 print(a - b) #{{'r', 'b'} #集合b中特有的元素 print(b - a) #{'m', 'z'} #並集,集合a和b中所有的元素 print(a | b) #{'m', 'r', 'd', 'z', 'c', 'b', 'a'} #集合a和b中特有的元素之和,並集-交集 print(a ^ b) #{'m', 'z', 'r', 'b'}
集合去重機制
先呼叫hash,再呼叫eq,eq不是每次都觸發,只有hash值相等的時候才會觸發。
可變型別和不可變型別
不可變型別
Number(數字)、String(字串)、Tuple(元組)
注意:int()整數在 [-5, 257) 常駐記憶體,這些整數物件是提前建立好的,不會被垃圾回收。(id相同)
判斷資料型別
isinstance 和 type 的區別在於:isinstance(10,int) type(10)
type()不會認為子類是一種父類型別。
isinstance()會認為子類是一種父類型別。