请教python创建list的话题

5250 2020-03-26 02:14:30
如代码
import random
class_list= [[],[],[]]
class_list1 = []
add_list = []
i = 0
while i < 3:
class_list1.append(add_list)
i += 1

class_num = random.randint(0, 2)
class_list[class_num].append(0)
class_list1[class_num].append(0)
print(class_list)
print(class_list1)

创建两个列表,往其中随机的子列表加入内容,list如我期待那样,每次随机给一个子列表添加,但是list1为什么每次都是给所有子列表添加内容。

结果如下
class_list: [[], [0], []]
class_list1: [[0], [0], [0]]
...全文
38 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paullbm 2020-03-26
  • 打赏
  • 举报
回复

class_list1.append(add_list)
改为
class_list1.append([])就行

解释见我在2楼链接中的问题解答!
paullbm 2020-03-26
  • 打赏
  • 举报
回复
你这问题和https://bbs.csdn.net/topics/396240768描述的基本是同一个问题!
  • 打赏
  • 举报
回复
因为你append进去的三个add_list 其实是同一个add_list 做了三次引用,他们在内存中指向的是同一个地址,所以你append一个三个都变 你可以在最后输出一下这个代码:

for i in class_list1:
    print(id(i))

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧