我有一个列表,我想添加多个值,我使用append()
,如下所示,再添加10个数字:
>>> x = [1, 2, 3, 4]
>>> x.append(5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (10 given)
我知道这意味着什么,所以我尝试用列表来做:
>>> x = [1, 2, 3, 4]
>>> x.append([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> x
[1, 2, 3, 4, [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]]
这不是我想要的。它包含不必要的方括号。我真正想要的是:
>>> x = [1, 2, 3, 4]
>>> x.what_I_want([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
我做出的第一次更改是为了取消TypeError
正确的更改吗?或者这就是为什么这不起作用?
答案 0 :(得分:3)
它被称为extend
:
>>> x = [1, 2, 3, 4]
>>> x.extend([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
http://docs.python.org/2/tutorial/datastructures.html#more-on-lists http://docs.python.org/2/library/stdtypes.html#mutable-sequence-types
为了完整起见,您的其他选项是创建一个新列表作为两个列表的串联:
>>> x = [1, 2, 3, 4]
>>> x + [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> x += [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
并在最后分配到空切片:
>>> x = [1, 2, 3, 4]
>>> x[len(x):len(x)] = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
尽管使用extend
。
答案 1 :(得分:1)
使用extend()
:
>>> x = [1, 2, 3, 4]
>>> x.extend([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
不要输入5到15之间的数字,而是使用range()
:
>>> x = [1, 2, 3, 4]
>>> x.extend(range(5, 15))
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
您所做的第一次修改是正确的,因为您一次只能append
一项,而不是tuple
<{1}}
答案 2 :(得分:1)
在Python中有几种方法可以做到这一点。
最常见和惯用的方法是使用extend
方法扩展列表。
x = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
x.extend(y)
print(x)
添加运算符也可用于执行此操作,但会创建新列表。
x = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
z = x + y # This creates a new list `z`
print(z)
也可以使用扩充分配来扩展列表。
x = x_ = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
x += y # This doesn't create a new list
assert x is x_
print(x)
特别深奥的方法将涉及使用切片分配。如果你想让人迷惑,你只想这样做。
x = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
x[len(x):] = y
print(x)
答案 3 :(得分:0)
list append()
方法接受一个参数,该参数被添加到列表中。因此,当您将列表传递给它时,该列表将成为其附加到的列表的新的最后一个元素。通过保持这种一致性,Python允许我们方便地创建和处理列表列表和更复杂的数据结构。但它确实意味着append()
不是您正在寻找的答案。
我能想到的最简单的问题答案是
x += range(15)
这在Python 2中可以正常工作,但在Python 3中range()
是一个生成器,所以你必须使用
x += list(range(15))
列表可以像元组一样添加在一起,它就像字符串连接一样。