小學生都能學會的python 深淺拷貝

2022-05-07 18:18:05 字數 3268 閱讀 1391

小學生都能學會的python(深淺拷貝)

join() 把列表中的每一項用字串拼接起來

# lst = ["汪峰", "吳君如", "李嘉欣", "陳慧琳", "關之琳"]

# # 遍歷列表. 把列表中的每一項用"_" 做拼接

# s = "_".join(lst) # 把列表轉化成字串

# print(s)##

# s1 = "汪峰_吳君如_李嘉欣_陳慧琳_關之琳"

# ls = s1.split("_") # 把字串轉化成列表

# print(ls)

# print("*".join("馬化騰"))

split() 相反

1. 關於刪除(重點)

1. 迴圈迭代過程中不能刪除。

2. 建立新列表。 把要刪除的內容儲存在新列表中。 迴圈新列表, 刪除老列表

3. 字典在迴圈的時候可以修改, 但不能新增和刪除

# lst = ["渣渣輝", "古天綠", "陳小春", "彭佳慧", "鄭中基", "胡辣湯"]

# # lst.clear()

# # for el in lst: # for 內部有乙個變數來記錄當前被迴圈的位置, 索引.

# # lst.remove(el) # 直接刪除. 是刪不乾淨的. 原因是每次刪除都設計到元素的移動. 索引在變.

## # 先把要刪除的內容儲存在乙個新列表中. 迴圈這個新列表. 刪除老列表

# new_lst =

# for el in lst:

# for el in new_lst:

# lst.remove(el)

# print(lst)

# lst = ["張無忌", "張三丰", "張翠山", "張嘉譯", '劉嘉玲', "劉能", '劉老根']

# # 刪除姓張的人

# new_lst =

# for el in lst:

# if el.startswith("張"):

## for el in new_lst:

# lst.remove(el)

# print(lst)

# dic =

# for k in dic:

# dic['謝遜'] = "張無忌他爹"

# print(dic)

dict.fromkeys(k, v)

把key迭代。和value組合成k:v建立新字典, 所有的key共享同乙個value

# d = {}

# # fromkeys正常來說應該是類名來訪問的.

# dd = d.fromkeys(["胡辣湯","are you 確定?"], "周芷若") # fromkeys是乙個類方法.作用是建立新字典

# print(d) # 原字典沒有改變

# print(dd) # 新的字典是通過第乙個引數的迭代. 和第二個引數組合成key:value建立新字典

# d = dict.fromkeys(["哇哈哈", "爽歪歪"], ) # 所有的key用的都是同乙個列表,改變其中乙個。 另乙個也跟著改變

# print(d)

## print(id(d['哇哈哈']), id(d["爽歪歪"]))

2. set集合(粗略)

特點: 無序, 去重, 雜湊

lst =

list(set(lst)) # 去重複

# dic = 

# print(dic) # key 不會重複

# dic[[1,2,3]] = "哇哈哈" # 必須是可雜湊的

# s = set() # 空集合

# s = # 不重複, 必須是可雜湊的

# print(s)

# set其實就是不存value的字典. 只存key

# 去重複

# lst = [1,2,3,4,4,4,4,5,5,6,7,7,7]

# s = set(lst)

# lst = list(s)

# print(lst)

s =

# s.add("趙鐵柱")

# s.add("李小花")

# s.add("王尼瑪")

# s.add("張全蛋")

# print(s)

## s.update(("劉偉", '張偉', "張三丰")) # 迭代更新

# item = s.pop()

s.remove("小瀋陽")

print(s)

# print(item)

# for el in s:

# print(el)

3. 深淺拷貝(難點)

1. 賦值。 不會產生新物件。 和拷貝沒關係

2. 淺拷貝。 只會複製自身。 會建立物件

2. 深拷貝。 把內部所有的內容都進行拷貝。

# lst1 = ["太白","日天","哪吒","銀王","金王"]

# lst2 = lst1

# print(id(lst1))

# print(id(lst2))

# lst1 = ["太白","日天","哪吒","銀王","金王"]

# # lst2 = lst1[:] # 建立了新列表

# lst2 = lst1.copy() # 會建立新物件, 建立物件的速度會很快.

# print(lst1)

# print(lst2)

# lst1 = ["太白","日天",["蓋澆飯", "鍋包肉", "吱吱冒油的豬蹄子"],"哪吒","銀王","金王"]

# lst2 = lst1.copy() # 會建立新物件, 建立物件的速度會很快.

# print(id(lst1[2]), id(lst2[2]))

# 匯入拷貝模組

# import copy

# lst1 = ["太白","日天",["蓋澆飯", "鍋包肉", "吱吱冒油的豬蹄子"],"哪吒","銀王","金王"]

# lst2 = copy.deepcopy(lst1)

# print(id(lst1[2]), id(lst2[2]))

# 賦值沒有建立新物件。多個變數共享同乙個物件

# 淺拷貝。 會建立新物件。 新的物件中裡面的內容不會被拷貝

# 深拷貝。 建立乙個一摸一樣的完全新的物件。 這個物件延伸出來的內容也會跟著複製乙份

a = [1, 2]

a[1] = a

print(a[1])

小學生都能學會的python 列表

小學生都能學會的python 列表 1.什麼是列表 list 能裝東西的東西 列表中裝的資料是沒有限制的,大小基本上是夠用的 列表使用來表示。在列表中每個元素與元素之間用逗號隔開 有索引和切片 start,end,step 2.增刪改查 1.增加 2.刪除 remove pop clear del ...

小學生都能學會的python 函式的高階

小學生都能學會的python 函式的高階 1.動態傳參 形參 1.位置引數 2.預設值引數 3.動態傳參 args 動態接收位置引數 kwargs 動態接收關鍵字引數 def func args,kwargs 在形參上用 表示聚合.實參表示打散 順序 位置 args 預設值 kwargs def c...

小學生都能看懂的數字dp

數字 dp 歸為計數 dp 通常需要統計乙個區間 l,r 內滿足某些限制條件的個數 數字dp其實很久前就知道了,也做過幾道和其他演算法混在一起的題目,其實通過手玩是能做的 但畢竟是種演算法,還是系統學下比較好 節省手玩時間 p2602 zjoi2010 數字計數 求 l,r 間,0 到 9 在數字上...