作爲編程的初學者,我試圖用Python來做到這一點。我想要一個簡單的函數,它將一個列表作爲參數,並返回另一個列表,它僅僅是原始列表旋轉一次(因此rotate([1, 2, 3])
將返回[2, 3, 1]
),同時保持原始列表不變。Python:操作列表
我知道,這一個
def rotate(list):
list.append(list[0])
list.remove(list[0])
將改變地方列表(和返回無)。
但是這一次
def rotate_2(list):
temp = list
temp.append(temp[0])
temp.remove(temp[0])
return temp
也會改變,以代替原始表(在返回所需的列表)。
,第三個
def rotate_3(list):
temp = [x for x in list]
temp.append(temp[0])
temp.remove(temp[0])
return temp
得到所需的結果,一方面保持原來不變的是返回一個新的列表。我不能理解rotate_2
的行爲。爲什麼當list
函數只是在temp
上執行某些操作時會被更改?它給了我一種感覺,就好像list
和temp
被temp = list
「連接」了。爲什麼rotate_3
沒問題?對不起,如果我的英文很奇怪,那不是我的第一語言(不像Python)。
因爲'temp = list **不**創建副本,不像'rotate_3'中的列表理解。 – jonrsharpe 2014-10-05 20:52:26