我的列表my_list创建为mylist = [[]]*5
现在我想在my_list
的第三个列表中添加一个整数4 my_list[2].append(4)
当我打印my_list时,我看到my_list中的每个列表都添加了整数4。
>>> my_list = [[]]*5
>>> my_list[2].append(4)
>>> my_list
[[4], [4], [4], [4], [4]]
有没有办法将4添加到第3个列表?
预期:[[],[],[4],[],[]]
实际:[[4],[4],[4],[4],[4]]
答案 0 :(得分:1)
找到了答案。
my_list = [[] for i in xrange(5)]
应该做的伎俩
答案 1 :(得分:1)
我对正在发生的事情的理解是,当你运行[[]]
时,它只会创建对一个初始化列表的多个引用。我相信 [[] for i in range(5)]
正是您所寻找的;它初始化父列表中的不同列表。希望这有帮助!
答案 2 :(得分:1)
TL,DR:
mylist = [list() for i in xrange(5)]
当python遇到mylist = [[]]*5
时,它会在你的内存中创建一个实体列表,并将这个只有一个列表的5个引用附加到mylist。
它等于:
single_list = []
mylist = [single_list, single_list, single_list, single_list, single_list]
因此,如果您将4附加到第三个列表,4
现在位于single_list中,并且因为所有5个引用都是相同的single_list
,所以它看起来像所有5个列表包含4
。