比如我們現在有乙個需求,需要鍵盤輸入一組人員姓名和年齡的資料,每一行代表一條資料,想儲存在乙個二維列表中,以下有兩種方式進行實現。
第一種:
n = int(input()) # 輸入人數
data =
for i in range(n):
b =
s = input().split()
print(data)
假設輸入人數是3,那得到的結果如下:
第二種:
n = int(input()) # 輸入人數
data =
b =
for i in range(n):
s = input().split()
# 刪除b列表元素,重新輸入資料
for j in range(len(b))[::-1]:
b.pop(j)
print(data)
假設也是輸入人數為3,得到的結果如下
方法二為什麼會得不到資料呢?
難道列表刪除元素之後,其他引用到該元素的列表中的元素也會被刪除嗎?
這裡就不得不說淺複製和深複製的區別了。
淺複製(淺拷貝):複製的只是原物件元素的引用,換句話說,淺複製產生的物件本身是新的,但是它的內容不是新的,只是對原物件的乙個引用。而上面**中的「=」號複製就是淺複製的一種,只引用了其內容,而記憶體位址並不變,還是原來列表資料的位址,所以當刪除了列表中資料時,也就沒法引用了,所以方法二的結果為空列表。
深複製(深拷貝):深拷貝就是不但拷貝了內容,還分配了新的記憶體空間,此時刪除原有資料,新列表的資料也不會被刪除了。
那怎麼使用深拷貝呢?
舉了栗子(以下即為深拷貝):
a = [1]
b = a.copy()
a.remove(1)
print(b)
專案週期所涉及到的文件控制說明
專案從需求調研到專案實施,要求有乙個良性的管理過程,其中在專案週期中涉及到的文件如下 1.調研日誌包 主要包括每日調研日誌檔案 接收文件檔案夾 調研過程控制表 2.溝通與會議資料夾 包括了與對應單位的往來會議記錄 通知訊息 專案干係人說明文件 專案情況介紹ppt等內容 3.需求文件 包括了調研報告檔...
JavaScript中涉及到的RegExp型別
正規表示式 由一些普通字元和特殊字元組成的,用以描述一種特定的字元規則的表示式,它是用來限制使用者在網際網路中輸入的規則 建立正規表示式 var 變數名 正規表示式的內容 修飾符 var reg 123456789 i var 變數名 new regexp 正規表示式的內容,修飾符 var reg ...
推薦系統中涉及到Id轉換
最近的推薦系統專案中,使用spark 中的機器學習演算法實現推薦,會把收到的使用者行為資料轉換為對應的評分資料,參考電影評分資料一樣,其中spark mllib中的als演算法需要的資料格式是uid itemid rating這種格式的,其中uid,itemid是int型別的,但是server手機到...