如何在Python中的一行中向列表中添加多个值?

时间:2014-03-04 00:24:24

标签: python list python-2.7 append

我有一个列表,我想添加多个值,我使用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正确的更改吗?或者这就是为什么这不起作用?

4 个答案:

答案 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))

列表可以像元组一样添加在一起,它就像字符串连接一样。