DAY7
1.深淺拷貝
ls = [1, 'a', [10]]
值拷貝:直接賦值 ls1 = ls, ls中的任何值發生改變,ls1中的值都會隨之改變
淺拷貝:通過copy()方法 ls2 = ls.copy(),ls中存放的值的地址沒有改變, 但內部的值發生改變,ls2會隨之改變
-- ls = [1, 'a', [10]] => [1, 'a', [100]] = ls2
深拷貝:通過deepcopy()方法 ls3 = deepcopy(ls),ls中存放的值發生任何改變,ls3都不會隨之改變
2.元組類型
t = tuple()
元組:1.就可以理解為不可變的list 2.有序 - 可以索引取值,可以切片 3.不可變 - 長度和內容都不能發生改變
細節:元組中可以存放所有的數據類型,所以存放可變類型數據后,可變類型依然可以發生改變
3.字典類型
d1 = {}
d2 = dict({'a': 1})
d3 = dict(name='Bob') # 所有的key都會用合法的變量名,最終轉化為字符串類型的key
d4 = {}.fromkeys('abc', 0) => {'a': 0, 'b': 0, 'c': 0}
key: 要確保唯一性,所以必須為不可變類型
value:存放可以存放的所有類型數據,所以支持所有類型
字典:1.可變 2.沒有索引,通過key取值 3.無序的
增刪改查:字典名[key名] | 字典名[key名] = 值 | update(dict) | setdefault(key, d_value) | get(key, default)
| pop(key) | popitem() | clear()
循環:keys() | values() | items()
for k, v in dic.items(): # (k, v)
pass
字典的成員運算:完成的就是 key 在不在 目標字典中
4.集合類型
s = set()
集合:1.可變 - 可增可刪 2.無序無索引無key - 不能取值不能改值 3.for可以對集合取值,取值的結果順序不確定
特定:不能存放重復的數據
1.哪些類型可以轉化為數字
res = int('10')
print(res)
res = int('-3')
print(res)
res = float('.15')
print(res)
res = float('-.15')
print(res)
res = float('-3.15')
print(res)
只有純數字的字符串才可以被直接轉化為數字
?
2.數字轉化字符串
print(str(10))
?
s = 'abc123呵呵'
print(list(s)) # ['a', 'b', 'c', '1', '2', '3', '呵', '呵'] 沒有對應的 str(ls)
ls = ['a', 'b', 'c', '1', '2', '3', '呵', '呵']
n_s = ''.join(ls)
print(n_s)
s1 = 'a b c 1 2 3 呵 呵'
res = s1.split()
print(res)
必須掌握
s2 = 'ie=UTF-8&wd=你好帥'
res = s2.split('&')? ? ? ?#在目標字符串中檢測到&就拆分字符串
print(res)? ? ? ? ? ? ?
['ie=UTF-8', 'wd=你好帥']
ls2 = ['ie=UTF-8', 'wd=你好帥']
n_s2 = '@'.join(ls2)
print(n_s2)?
ie=UTF-8@wd=你好帥
?
4.需求:"ie=UTF-8&wd=你好帥" => [('ie', 'UTF-8'), ('wd', '你好帥')]
res = []
s4 = "ie=UTF-8&wd=你好帥"
ls4 = s4.split('&') # ['ie=UTF-8', 'wd=你好帥']
for ele in ls4: # v = ie=UTF-8 | wd=你好帥
k, v = ele.split('=') # k: ie v: UTF-8
res.append((k, v))
print(res)
5.需求:"ie=UTF-8&wd=你好帥" => {'ie': 'UTF-8', 'wd': '你好帥'}
res = {}
s5 = "ie=UTF-8&wd=你好帥"
ls5 = s5.split('&') # ['ie=UTF-8', 'wd=你好帥']
for ele in ls5: # v = ie=UTF-8 | wd=你好帥
k, v = ele.split('=') # k: ie v: UTF-8
res[k] = v
print(res)
?
6.需求:[('ie', 'UTF-8'), ('wd', '你好帥')] => {'ie': 'UTF-8', 'wd': '你好帥'}
res = {}
ls6 = [('ie', 'UTF-8'), ('wd', '你好帥')]
for k, v in ls6:
res[k] = v
print(res)
7.list與tuple、set直接相互轉化 - 直接 類型()
?
# 8.需求:將漢字轉化為數字
# 將 壹、貳、叁、肆、伍、陸、柒、捌、玖、拾、佰、仟
# 轉化為 1、2、3、4、5、6、7、8、9、10、100、100
# 作業:壹仟捌佰玖拾叁 => 1893
num_map = {
'壹': 1,
'貳': 2,
'仟': 1000
}
ls8 = ['貳', '壹', '仟']
res = []
for v in ls8:
num = num_map[v] # 通過key去映射表拿到對應的值,完成 '貳' => 2
res.append(num)
print(res)
# 數據 從 硬盤 => 內存 => cpu
# 應用程序打開文本文件的三步驟
# 1.打開應用程序
# 2.將數據加載到內存中
# 3.cpu將內存中的數據直接翻譯成字符顯示給用戶
# python解釋器
# 1.打開python解釋器
# 2.將數據加載到內存中
# 3.cpu將內存中的數據解釋執行將結果顯示給用戶,如何解釋執行不能通過,將錯誤信息提供給用戶
# 編碼的發展史
# 電腦只能識別高低電頻對應的0,1信息 => 問題:如何將世間萬物信息存放到內存中
# 世間萬物信息 => 0,1形式的數據 => 電腦中存放,將該過程逆向操作,就是訪問已存儲的數據信息
# 編碼表
# 人能識別的字符 <=> 機器能識別的字符:一定存在一種固定的對應關系
# 編碼表:一定范圍內人能識別的字符與機器能識別的字符形成的對應關系表(映射表)
# 1.ASCII表:英文字母、英文符號、數字與機器能識別的字符的對應關系表,8個二進制位就能存放完這所有的對應關系 => 1字節
# python2采用的默認編碼是ASCII,早期并不支持中文編程
# 2_1.GBK:中文與與機器能識別的字符的對應關系表(完全兼容ASCII表),16個二進制位能存放所有漢字與ASCII之前的對應關系 => 2個字節
# 2個字節能否存放常用漢字 => 16個二進制位 2^15
# print(pow(2, 15))
# 2_2.Shift_JIS | Euc-kr:日文 | 韓文 與機器能識別的字符的對應關系表(完全兼容ASCII表)
# 亂碼:存的編碼格式與取的編碼格式不一致
# 3.Unicode萬國碼:世間中常用國家的常用字符與機器能識別的字符的對應關系表
# 轉碼:Unicode存在漢字與二進制對應關系,GBK也存在漢字與二進制對應關系,將GBK存放的數據轉存到Unicode數據
# 均采用Unicode編碼表,只是存放數據采用字節數不一致,utf-8與utf-16是Unicode編碼表的兩種體現方式
# utf-8:以1個字節存放英文,以3 | 6個字節存放漢字,在英文數據過多時,更深空間,用來傳輸效率更高
# utf-16:所有支持的符號都采用2個字節存放,讀存數據采用定長,不用計算,讀存效率高
# 硬盤到內存需要數據的傳輸,內存到CPU需要數據的傳輸,所有都采用utf-8
# 內存需要高速讀寫,采用utf-16
# 學習的結晶:編碼與解碼要統一編碼
# 操作文本字符
res = "漢字呵呵".encode('utf-8') # 編碼:將普通字符串轉化為二進制字符串
print(res) # b'\xe6\xb1\x89\xe5\xad\x97\xe5\x91\xb5\xe5\x91\xb5'
res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('GBK') # 解碼:將二進制字符串轉化為普通字符串
print(res) # 鍛靛懙 亂碼了
res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('utf-8')
print(res) # 呵呵 讀寫編碼統一后就不亂碼了
?
轉載于:https://www.cnblogs.com/duGD/p/10738672.html
總結
- 上一篇: springBoot+mybatisPl
- 下一篇: JS中for in 与 for of