提问人:Rishabh Sharma 提问时间:5/26/2022 最后编辑:OneCricketeerRishabh Sharma 更新时间:5/26/2022 访问量:59
什么是python通过引用传递不起作用?
What is python pass by reference not working?
问:
我有一个生成数组排列的解决方案,如下所示:
class Solution:
def permuteHelper(self,li,nums,ji,x):
if len(ji)==x:
li.append(ji)
return
for i in range(len(nums)):
ji.append(nums[i])
self.permuteHelper(li,nums[:i]+nums[i+1:],ji,x)
ji.pop()
def permute(self, nums: List[int]) -> List[List[int]]:
li = []
ji = []
self.permuteHelper(li,nums,ji,len(nums))
return li
想法是使用另一个数组,将原始数组中的每个元素逐个附加,在附加元素之前跳过。但是当这样做时,我得到了空列表列表的输出。
在网上,我看到有人做同样的事情,只是他们这样做了:
class Solution:
def permuteHelper(self,li,nums,ji,x):
if len(ji)==x:
li.append(ji)
return
for i in range(len(nums)):
self.permuteHelper(li,nums[:i]+nums[i+1:],ji+[nums[i]],x)
def permute(self, nums: List[int]) -> List[List[int]]:
li = []
ji = []
self.permuteHelper(li,nums,ji,len(nums))
return li
我不知道为什么他们的解决方案有效而我的解决方案无效,我的逻辑与他们相同,但我不明白其中的区别。有人可以解释为什么第二个有效而第一个无效吗?
答: 暂无答案
评论
ref
out
li
ji
li
ji
permuteHelper
append
+