你可以在另一个列表的元素中复制列表吗?

时间:2015-10-13 22:55:44

标签: python list python-3.x

我想知道是否有可能在另一个元素上复制整个列表。

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]]

可以这样做吗?

2 个答案:

答案 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])复制ab引用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))

添加它