【发布时间】:2021-06-04 05:24:36
【问题描述】:
在我的代码中,有一些预先编写的部分是不可更改的。当我从方法返回一个列表并且在主函数中它没有得到更新的列表。当我尝试打印时,它会打印旧列表值请帮助我将更新后的列表返回到主函数
class Solution:
def func(self,n,p,arr)
l=arr.copy()
arr=[]
for i in range(1,P+1):
if i in l:
arr.append(l.count(i))
else:
arr.append(0)
return arr
#The below part is pre-written which is immutable
if __name__=="__main__":
n=5
p=5
arr=[2, 3, 2, 3, 5]
ob=Solution()
ob.func(n,p,arr)
for i in arr:
print(i)
【问题讨论】:
-
您需要执行
arr = ob.func(n, p, arr)(更好的方法)或删除arr = []。在函数内部重新分配参数永远不会影响最初传入的变量;要从函数中获取信息,您通常必须在函数内部使用return(您正在这样做),并将返回的值分配给函数外部的变量(您没有这样做)。 -
我明白你在说什么,但主要部分是预先写好的,我无法更改,如果我删除 arr=[] 之前的元素存在。
-
arr.clear()也可用于删除arr中的所有元素,如果需要,无需重新分配它 - 作为arr = []的替代方案。这将持续存在,因为它是 mutation,而不是 assignment。
标签: python-3.x function