Python 填充列表的快捷方式

2 投票
2 回答
4041 浏览
提问于 2025-04-17 13:51

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]

另外,这里有一个链接,里面有相关的教程部分(“切片赋值”)。你可以看看 这里

撰写回答