Java有Arrays.fill(A,1)
。对于预先存在的列表A
,是否有使用1
填充列表的快捷方式?我正在编写一个函数,它接受一个数组并以某种方式更改数组。由于数组是指针,我的函数不会返回数组。函数返回后,调用者将看到更改。我的函数的第一步是用1s
填充数组。做
def my_work(A):
A =[1]*len(A)
# more work on A
<{1}}完成后,似乎无法更改A
。
这是我唯一的选择
my_work
还是有捷径?我看起来像是一种解决方法。
答案 0 :(得分:4)
如果您确实要更改A
,A[:]
语法应该有效:
>>> A = [1,2,3]
>>> def my_work(A):
... A[:] = [1]*len(A)
...
>>> A
[1, 2, 3]
>>> my_work(A)
>>> A
[1, 1, 1]
here是本教程的相关部分(“赋值给切片”)。
答案 1 :(得分:0)
A没有改变,因为你没有将它归还my_work
。一旦my_work完成,你在那里的A就没有被引用。
def my_work(A):
A =[1]*len(A)
return A #This line is needed
A = my_work(A)
另一种方法是这样的。
def reset_list(L, x):
return [x for i in xrange(len(L))]
A = reset_list(A,1)