基本數據類型補充 深淺拷貝

1. 基礎數據類型補充
大多數的基本數據類型的知識.已經學完了
join()
 "*".join("馬虎疼") # 馬*虎*疼 把傳遞進去的參數進行迭代. 獲取到的每一個元素和前面的*進行拼接. 獲得的是字符串程序員

# lst = ["alex", "dsb", "wusir", "xsb"]
# 使用前面的字符串. 對後面的列表進行拼接,拼接的結果是一個字符串
# s = "_".join(lst)
# print(s)

 


split() 切割. 切割的結果是列表app

# split() 根據你給的參數進行切割, 切割的結果是列表

# s = "alex_dsb_wusir_xsb"
# lst = s.split("_")  # 列表
# print(lst)

 

列表和字典: 都不能在循環的時候直接刪除
把要刪除的內容記錄在新列表中而後循環這個新列表. 刪除列表(字典)spa

 

須要把字符串轉化成列表: split()
# 把列表轉化成字符串: join()code

 

 

列表刪除:對象

 lst = ["籃球", "排球" ,"足球", "電子競技", "檯球"]
# 1. 把要刪除的內容寫在新列表中.# 2. 循環這個新列表. 刪除老列表# 需求: 刪除列表中代球字的運動項目new_lst = []for el in lst:    if "球" in el:        new_lst.append(el) # 記錄要刪除的內容# 要刪除的列表print(new_lst)# 循環新列表. 刪除老列表for el in new_lst: # ['籃球', '排球', '足球', '檯球']    lst.remove(el)print(lst)

字典刪除:blog

字典在被循環的時候是不能刪除的.
dic = {"張無忌":"乾坤大挪移", "周芷若":"", "趙敏":"賣萌"}

# # for k in dic:
# #     # dic.pop(k)  # dictionary changed size during iteration
# #     dic["滅絕師太"] = "倚天屠龍劍" # dictionary changed size during iteration
#
# # 把要刪除的key保存在一個新列表中
# # 循環這個類表.刪除字典中的key:value
# lst = []
# for k in dic:
#     lst.append(k)
#
# # 循環列表
# # 刪除字典中的內容
# for el in lst:
#     dic.pop(el)
# print(dic)

 

fromkeys()
坑1: 返回新字典. 不會更改老字典
坑2: 當value是可變的數據類型. 各個key共享同一個可變的數據類型. 其中一個被改變了. 其餘都跟着變內存

# 坑: 大坑, 神坑
# fromkeys() 幫咱們建立字典用的
# 把第一個參數進行迭代. 拿到每一項做爲key和後面的value組合成字典
# d = dict.fromkeys("張無忌", "趙敏") # 建立字典
# print(d)








# 坑1: 返回新字典. 和原來的字典沒有關係
# dic = {}
# d = dic.fromkeys("風扇哥", "很困")
# print(dic) # {}
# print(d)


# 坑2: 若是value是可變的數據類型,
# 那麼其中一個key對應的value執行的更改操做. 其餘的也跟着變
# d = dict.fromkeys("胡辣湯", [])
# print(d) # {'胡': [], '辣': [], '湯': []}
# print(id(d['胡']))
# print(id(d['辣']))
# print(id(d['湯']))

# d['胡'].append("河南特點")
# print(d)  # {'胡': ['河南特點'], '辣': ['河南特點'], '湯': ['河南特點']}

 

# 程序員找工做和菜市場大媽買白菜是同樣的rem


2. 深淺拷貝(重點, 難點)
  1. = 沒有建立新對象, 只是把內存地址進行了複製
  2. 淺拷貝 lst.copy() 只拷貝第一層.
  3. 深拷貝
  import copy
  copy.deepcopy() 會把對象內部的全部內容進行拷貝字符串

# lst1 = ["胡辣湯", "灌湯包", "油潑面", "麻辣香鍋"]
# lst2 = lst1.copy()  # 拷貝, 抄做業, 能夠幫咱們建立新的對象,和原來長的如出一轍, 淺拷貝
#
# print(id(lst1))
# print(id(lst2))
#
# lst1.append("葫蘆娃")
# print(lst1)
# print(lst2)

 

# lst1 = ["胡辣湯", "灌湯包", "油潑面", "麻辣香鍋", ["長白山", "白洋澱", "黃鶴樓"]]
# lst2 = lst1.copy() # 淺拷貝. 只拷貝第一層內容
#
# print(id(lst1))
# print(id(lst2))
#
# print(lst1)
# print(lst2)
#
# lst1[4].append("葫蘆娃")
# print(lst1)
# print(lst2)
import copy

lst1 = ["胡辣湯", "灌湯包", "油潑面", "麻辣香鍋", ["長白山", "白洋澱", "黃鶴樓"]]
lst2 = copy.deepcopy(lst1) # 深拷貝: 對象內部的全部內容都要複製一份. 深度克隆(clone). 原型模式

print(id(lst1))
print(id(lst2))

print(lst1)
print(lst2)

lst1[4].append("葫蘆娃")
print(lst1)
print(lst2)

 

爲何要有深淺拷貝?
提升建立對象的速度
計算機中最慢的. 就是建立對象. 須要分配內存.
最快的方式就是二進制流的形式進行復制. 速度最快.原型

相關文章
相關標籤/搜索