2

Java 有Arrays.fill(A,1). 对于预先存在的 List A,是否有填充列表的快捷方式1?我正在编写一个函数,它接受一个数组并以某种方式更改数组。由于数组是指针,所以我的函数不会返回数组。调用者将在我的函数返回后看到更改。我函数的第一步是用1s. 正在做

def my_work(A):
   A =[1]*len(A) 
   # more work on A

A完成后似乎没有改变my_work

所以是我唯一的选择

for i in range(len(A)):
  A[i]=1

还是有捷径?我的看起来像一个解决方法。

4

2 回答 2

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]

这是本教程的相关部分(“分配给切片”)

于 2013-01-27T21:57:16.610 回答
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)
于 2013-01-27T20:30:23.937 回答