【发布时间】:2017-02-10 15:50:38
【问题描述】:
如果我有
a = [1, 2, 3]
def foo (arr):
for i in len (arr): arr [i] += 1
def bar (arr):
foo (arr[:2])
bar (a)
print (a)
我想输出为
>>> [2, 3, 3 ]
我该怎么做?
动机:我想要一个可以冻结最后一个N 元素的优先级队列,即仅将queue[:N] 传递给heapq.heappush()。但是,每次我将切片传递给它或任何一般函数时,它都会将切片的副本而不是实际列表发送给函数,因此我的列表最终保持不变。
【问题讨论】:
-
你还有一个问题:
for item in arr: item += 1也不会更改列表。 -
将数组切片生成另一个对象。
-
当输出为
[2, 3, 4 ]时arr[:2])有什么意义(所有元素加1)
标签: python python-3.x pass-by-reference slice