1.模塊導入問題app
如何導入模塊:函數
import sysspa
如何查看該模塊路徑:code
prinnt(sys.path)blog
2.== 與 is 的比較 返回Ture Flase遞歸
"=="用來比較兩個值是否相等內存
"is"用來表示兩個變量是不是同一個,比較的是內存地址(針對引用類型(list,tuper,dict)字符串
1 a = [1,2,3] 2 b = [1,2,3] 3 a == b 4 a is b 5 基本數據驗證 6 a=256 7 b=256 8 a is b 9 a == b 10 [-5 257]範圍內的數字爲同一個值
特殊:在基本類型中,有一個小整數,在[-5,max]之間是Tureclass
value1 = -6 value2 = -6 print(value1 == value2) Ture print(value1 is value2) Flase
3.深淺複製問題效率
1.深淺copy概念
快捷方式
副本
嵌套列表複製時,若是是深copy,會遞歸複製列表
淺copy只複製當前列表
使用copy複製時,要先導import copy模塊
a = [1,2,3] b = a print(id(a)) print(id(b)) import copy c = copy.copy(a) d = copy.deepcopy(a) print(id(c)) print(id(d))
2.嵌套列表深copy
import copy list1 = [1,2,3] list2 = [4,5,6] list3 = [list1,list2] list4 = copy.copy(list3) list5 = copy.deepcopy(list3) list1.append(10) print(list4) print(list5) print(id(list4)) print(id(list5))
輸出:[[1, 2, 3, 10], [4, 5, 6]]
[[1, 2, 3], [4, 5, 6]]
2357803911112
2357803911048
4.進制問題
進制問題:
十進制:
0 ~ 9
一、二進制
0 1
0b
二、八進制
0-7
0o
三、十六進制
0-9 A-F
0x
十進制轉換二進制
除以2 取餘數(倒着)
10 --> 1010
十進制轉2,8,16進制
一、函數實現
2:
bin()
8:
oct()
16:
hex()
二、手動推算
2:
除以2 倒取餘數
8:
除以8 倒取餘數
16:
除以16 倒取餘數
若是餘數爲10,應該是A
其餘進制轉換爲十進制
一、函數實現
2->10
int('0b1010',2)
8->10
int('0o144',8)
16->10
int('0x3c',16)
二、方法推算
例如:
二進制數字1010
0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 1 * 2^3
a = 10 resutl = bin(a) print(type(resutl)) print(resutl) result2 = int('0b1010',2) print(result2) b = 1000 # 打印八進制的字符串 print(oct(b)) # 打印十六進制的字符串 print(hex(b)) c = '0x3e8' print(int(c,16))
5.原碼,反碼,補碼
原碼、反碼、補碼 1 - 1 1 + -1 正數1的二進制形式 0000 0001 0000 0001 0000 0001 負數1的二進制形式(原碼、反碼、補碼=反碼+1) 1000 0001 原碼 1111 1110 反碼 1111 1111 補碼 1000 0010 -2 0000 0001 1111 1111 0000 0000
6.位運算
節約內存,效率高
直接基於二進制操做
2 -> 8
2 + 6
2 * 4
左移:
<<
2 * 2^n
右移:
>>
8 / 2^n
print(2 << 2) print(8 >> 2) print(4 << 3) print(64 >> 3) # 按位與 & 都爲1的時候結果1 print(3 & 5) # 按位或 丨 有一個爲1結果爲1 print(3 | 5) # 按位異或 相同爲0,不一樣爲1 對同一個數字異或兩次,獲得源數據 result = 3 ^ 5 print(result) print(result^ 5) # 按位取反 " ~ " print('-'*50) # 按位取反,獲得原碼->取反碼->取補碼 print(~5)