Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何在一行中向列表添加多个值?_Python_List_Python 2.7_Append - Fatal编程技术网

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

在Python中,如何在一行中向列表添加多个值?,python,list,python-2.7,append,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

我有一个要添加多个值的列表,我使用
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.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
而做的第一次更改是否正确?或者这就是为什么它不起作用的原因?

它被称为
扩展

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

为完整起见,您的其他选项将创建一个新列表,作为两个列表的串联:

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

使用
extend()

使用
范围()
,而不是键入从5到15的数字:

您所做的第一次编辑是正确的,因为您一次只能追加一项,而不是像
(5、6、7、8、9、10、11、12、13、14)那样的
元组
列表
append()
方法接受一个添加到列表中的参数。因此,当您向它传递一个列表时,该列表将成为它所附加到的列表的最后一个新元素。通过保持这种一致性,Python允许我们方便地创建和处理列表列表和更复杂的数据结构。但这确实意味着
append()
不是您想要的答案

我能想到的解决你问题的最简单的办法是

x += range(15)
这在Python2中可以正常工作,但在Python3中,
range()
是一个生成器,因此必须使用

x += list(range(15))

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

在Python中有几种方法可以做到这一点

最常见和惯用的方法是使用
extend
方法就地扩展列表

x = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
x.extend(y)
print(x)
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]
z = x + y # This creates a new list `z`
print(z)
还可以使用增广分配来扩展现有列表

x = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
x.extend(y)
print(x)
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)

如果他尝试附加一个元组(
x.append((5,6,7))
),他就会成功,就像添加列表一样。问题是试图将多个参数传递给该方法。