我需要一個將列表重置爲其原始狀態的函數,所以爲了做到這一點,我將使用列表的副本作爲實現列表的最直接方式。將創建列表副本的函數
每當我對列表(或列表數量)進行更改時,我希望列出其原始狀態列表。由於列表的數量可以更大,我需要一個可以處理它的函數,而不必每次都重複幾行代碼。
我試圖做一個函數,只是簡單地創建一個列表的副本,因此我可以用它來獲得一個原始列表的副本進一步的改動。 但有件事,我很想念,因爲即時得到錯誤:
list1=[1,2,3]
list2=['a','b','c']
list3=[434,52,43]
def copy_lists():
list1c=list1[:]
list2c=list2[:]
list3c=list3[:]
copy_lists()
list1c.append('b')
copy_lists()
#now list1c should be back to orginal
print(list1c)
---------------------------------------------------------------------------
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-95468ead1e78> in <module>()
9
10 copy_lists()
---> 11 list1c.append('b')
12 copy_lists()
NameError: name 'list1c' is not defined
'list1c'是一個局部變量,只在'copy_lists'內定義。 –
深度拷貝可能會爲您做到這一點:https://docs.python.org/3.6/library/copy.html –
不要(嘗試)使用如此多的全局變量。以列表形式作爲參數進行復制,然後將這些副本返回到一個元組(或另一個列表)中。 – chepner