我想知道是否有可能在另一个元素上复制整个列表。
a = [1, 2, 3]
b = []
b[0] = list(a)
print(b)
它给出错误:list assignment index out of range
但如果我们不复制它,我们只把它放在那里:
a = [1, 2, 3]
b = [a]
print(b)
它可以工作并打印:[[1, 2, 3]]
可以这样做吗?
答案 0 :(得分:5)
它给出错误:"列表分配索引超出范围"
因为您已使用 要向列表中添加值,通常始终使用 简单,清晰,简洁。 通过一个示例,每个示例中 使用 使用b
创建了b=[]
作为空列表,然后您尝试 访问 执行[0]
时b
列表b[0]
的第一个元素b[0] = list(a)
,以及的索引不存在。< / p>
list.append()
方法:a = [1, 2, 3]
b = []
b.append(a) # similar to b = [a] but more intuitive.
print(b) # prints b = [[1, 2, 3]]
注意事项:
b.append(a)
和b.append(list(a))
是两个 同样看起来不同的 。 b.append(a)
(类似于b = [a]
)复制a
中b
的引用,b.append(list(a))
从a
的值创建新列表 ,并将其添加到列表b
。因为列表是可变的,所以在操作内部列表时会产生令人困惑的含义。a = [1, 2, 3]
和b=[]
都会变得更加清晰:b.append(a)
:b.append(a)
print(b) # prints b = [[1, 2, 3]]
# Now if we modify a:
a.append(4) # a = [1, 2, 3, 4]
# Changes are visible in b:
print(b) # b = [[1, 2, 3, 4]]
b.append(list(a))
:b.append(list(a))
print(b) # prints b = [[1, 2, 3]]
# Now if we modify a:
a.append(4) # a = [1, 2, 3, 4]
# Changes are NOT visible in b:
print(b) # b = [[1, 2, 3]]
答案 1 :(得分:3)
Python列表不允许您修改索引等于或大于列表长度的元素。空列表的第一个元素不存在。您需要使用b.append(list(a))