栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 列表添加元素后,之前元素也发生改变

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 列表添加元素后,之前元素也发生改变

在LeetCode 39. 组合总和题目中,使用python进行编程:

class Solution:
  def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
    def findPath(candidates, target, path, ind, res):
      if target == 0:
        res.append(path)
      if target < 0:
        return
      for i in range(ind, len(candidates)):
        if candidates[i] <= target:
          path.append(candidates[i])
          findPath(candidates, target - candidates[i], path, i, res)
          path.pop()
     path = []
     res = []
     findPath(candidates, target, path, 0, res) 
     return res

发现运行结果res一直为[[],[]],debug了很久,发现其实时python的list机制问题。在python中,list保存的不是值,而是对应元素的地址,所有当res后面append(path)时,保存的时path的地址。当path变化后,整个res前面的元素也发生了变化。如何修改,可以在res.append(path.copy())增加copy()函数,这样就保存了一个新的空间地址,就可以通过了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号