这看起来非常基本,但由于某种原因,我的列表在调用函数时被修改,即使我从未改变它的值。
我想创建一个值加倍的新列表,而原始列表保持不变。(我需要用这个方法来做,而不是像列表推导式这样的方法,因为以后我想做不同的事情,而不是每个项翻倍)。
def DoubleList(listToDouble):
tempList = listToDouble
for i in range(4):
tempList[i] *= 2
return tempList
mainList = [100, 100, 32, 32]
print('List =', mainList) # Should print [100, 100, 32, 32]
doubledList = DoubleList(mainList)
print('Doubled list =', doubledList) # Should print [200, 200, 64, 64]
print('Final List =', mainList) # mainList was never changed, so should print [100, 100, 32, 32]?
当前打印:
List = [100, 100, 32, 32]
Doubled list = [200, 200, 64, 64]
Final List = [200, 200, 64, 64]
我本以为doubledList
会翻倍(这很好),但mainList
会保持不变(目前它也翻倍)。
这就是它应该做的,我只是错过了它?感谢任何可以帮助的人!:)
在python中你不能传递值,你传递的是一个引用,这意味着引用是同一个列表。
如果你复制列表,那么你得到预期的行为:
tempList = listToDouble[:]