1. 程式人生 > >01 - 資料型別

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()會認為子類是一種父類型別。