鱼C论坛

 找回密码
 立即注册
查看: 2899|回复: 3

关于列表作为函数参数调用的问题

[复制链接]
发表于 2015-1-27 13:37:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. def fun(data):
  2.     data[0][0] = 1
  3.     print('函数中',data)

  4. data = [[0 for x in range(5)]]

  5. print('函数前:',data)
  6. fun(data)
  7. print('函数后',data)
复制代码


怎么才能不改变外面data的数据

评分

参与人数 1鱼币 +30 收起 理由
~风介~ + 30 挖钻石奖励!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-1-27 14:02:16 | 显示全部楼层
这个和函数没啥关系,就是不传参数在函数里也可以修改列表。没错就是这么任性!
普通的方法是进行一次copy。

  1. newlist = oldlist[:]
  2. 或者是
  3. newlist = oldlist.copy()
  4. 或者是
  5. import copy
  6. newlist = copy.copy(oldlist)

  7. 但是这只适用于列表里面的元素不是列表的情况。
  8. 你的那个栗子以及多层列表需要
  9. import copy
  10. newlist = copy.deepcopy(oldlist)
复制代码


闲的没事自己写个copy函数也行~~~。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-27 14:08:35 | 显示全部楼层
wei_Y 发表于 2015-1-27 14:02
这个和函数没啥关系,就是不传参数在函数里也可以修改列表。没错就是这么任性!
普通的方法是进行一次copy ...

ok,谢谢,知道了,我也试了浅拷贝,不行,原来要深一些..学习了

评分

参与人数 1鱼币 +30 收起 理由
~风介~ + 30 挖钻石奖励!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-1 10:49:16 | 显示全部楼层
深拷贝才不会。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-14 14:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表