Python append to list of list

16 浏览
0 Comments

Python append to list of list

我有一个包含单词列表的列表。\n例如:\n

[['A','B','C'],['D'],['E']]

\n为了实现这一点,我创建了一个大小为4的空列表的列表。\n

list1=[list()] *4

\n然后逐个尝试添加元素。\n

list1[0].append('A')
list1[0].append('B')
list1[0].append('C')
list1[1].append('D')
list1[2].append('E')

\n输出结果:\n

[['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E']]

\n期望的结果是:\n

[['A','B','C'],['D'],['E']]

0
0 Comments

问题的原因是在初始化方法中使用了*操作符,导致创建了一个包含四个指针的列表,这些指针都指向同一个列表。在这种情况下,不应该使用*操作符。

解决方法是不使用*操作符,而是直接初始化一个空列表。然后,可以使用append()方法将需要的列表添加到主列表中。

下面是一种解决方案的示例代码:

# 初始化一个空列表
main_list = []
# 创建需要添加的子列表
sub_list = [1, 2, 3, 4]
# 将子列表添加到主列表中
main_list.append(sub_list)
# 输出结果
print(main_list)

运行上述代码后,输出结果为:

[[1, 2, 3, 4]]

可以看到,现在主列表包含一个子列表,而不是四个指向同一个列表的指针。这是因为我们直接将子列表添加到主列表中,而不是使用*操作符创建指针。

通过避免使用*操作符,我们成功解决了Python中将列表添加到列表的问题。现在,我们可以自由地向主列表中添加更多的子列表,而不会出现指针共享的问题。

0
0 Comments

问题的原因是在这里:list1=[list()] *4,你正在复制相同的列表对象。你实际上是每次都向同一个列表添加元素。

解决方法是:

list1=[[] for i in range(3)]
list1[0].append('A')
list1[0].append('B')
list1[0].append('C')
list1[1].append('D')
list1[2].append('E')

这将给出你期望的结果。

0