python程式設計時經常修改了原始資料

2021-09-13 13:37:04 字數 783 閱讀 4679

python一直用的很零散和基礎,從現在開始記錄一下遇到過的小坑,加強一下記憶。

最近在寫cs224n的作業的時候,經常把輸入資料改了(一般是包含list型別的資料)導致找錯誤找了很長時間,終於被我發現了。至於為什麼會導致輸入資料的改變,這跟python引用傳值的機制應該是分不開的,然額我並沒有理解,這裡暫時記錄下對比的兩個例子。。。。

0328補充:

這裡主要涉及賦值操作,增量賦值(類似+=,*=這樣等號和乙個算術操作符組合在一起的賦值叫增量賦值)

普通賦值實際上傳遞的是引用;

a = a+x這樣的賦值方式會新分配乙個物件給到a;

而增量賦值不僅僅是形式上的改變,更重要的是,如果操作物件是可變物件,可變物件會被就地修改,不會新分配乙個物件;若操作物件是不可變物件才會新分配乙個物件!

(ref: python核心程式設計)

# 會改變原始資料的例子

a = [([1,2,3,4], [1,2,3,4])]

for i, j in a:

i += [0]

j += [0]

print(i)

print(j)

print(a)

# 不會改變原始資料的例子

a = [([1,2,3,4], [1,2,3,4])]

for i, j in a:

i = i + [0]

j = j + [0]

print(i)

print(j)

print(a)

Python在自動化運維時經常會用到的方法

得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 返回指定目錄下的所有檔案和目錄名 os.listdir 函式用來刪除乙個檔案 os.remove 刪除多個目錄 osremovedirs r c python 略危險,熟練之後再用吧 檢驗給出的路徑是否是乙個檔案 os.p...

python複製 解壓zip保留原修改時間

情景 在使用python複製檔案或者解壓zip檔案時,檔案的修改時間總是被搞成了當前的執行時間,這樣有時會讓人挺蛋疼的。import zipfile 發布函式 defdeploy 發布單號 order code sys.argv 1 解壓到當前目錄,要包含根目錄 deploy file zip os...

Python程式設計之批量修改檔案內容

本文簡介 本文主要介紹利用python批量處理資料夾中的檔案,並對其內容進行修改最後生成至另一資料夾中的實現過程。輸入示例檔案 示例 import os path c users administrator desktop input 資料夾位址 for root,dirs,files in os....