Python 填充列表的快捷方式
Java有一个方法叫做Arrays.fill(A,1)
,可以用来把数组里的所有元素都填充为1
。那么,对于一个已经存在的列表A
,有没有什么简单的方法可以把这个列表也填充为1
呢?我正在写一个函数,这个函数会对一个数组进行一些修改。因为数组是指针,所以我的函数不会返回一个新的数组。调用这个函数的人在函数返回后会看到数组的变化。我的函数的第一步就是把数组里的所有元素都填充为1
。但是,
def my_work(A):
A =[1]*len(A)
# more work on A
在my_work
执行完后,似乎并没有改变A
。
那么,我唯一的选择是
for i in range(len(A)):
A[i]=1
还是说有没有更简单的方法?我觉得我的方法看起来像是个变通办法。
2 个回答
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)
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]
另外,这里有一个链接,里面有相关的教程部分(“切片赋值”)。你可以看看 这里。