python“连接”需要额外的括号

问题描述 投票:0回答:1

我正在尝试连接 3 个列表。当我尝试使用连接时,像这样,我收到错误(TypeError:'list'对象不能解释为整数):

import numpy as np

a = [1]
b = [2]
c = [3]
z = np.concatenate(a, b, c)

但是如果我加上“额外的”括号,它的工作原理如下:

z = np.concatenate((a, b, c))

为什么?

python python-3.x list numpy
1个回答
2
投票

我不确定你正在使用什么库(

concatenate
不是内置的python 3.x函数)。不过,我会解释我认为发生了什么。

当您调用

concatenate(a, b, c)
时,函数
concatenate
会被发送三个参数:
a
b
c
concatenate
然后执行一些(可能)不是所需行为的逻辑。

当您调用

concatenate((a, b, c))
时,会创建一个值为
(a, b, c)
的元组(实际上是一个无法更改的列表),该值的计算结果为
([1], [2], [3])
。然后这个元组被传递给
concatenate
函数。下面的代码实际上相当于你的第二个代码片段:

a = [1]
b = [2]
c = [3]
y = (a, b, c)  # This evaluates to ([1], [2], [3]).
z = concatenate(y)

我希望我已经解释得足够清楚了。如果我还没有,这里有一篇文章更深入地解释了元组:https://www.w3schools.com/python/python_tuples.asp

编辑:感谢您加入图书馆。这是您可能想要执行的操作的代码:

import numpy as np
a = [1]
b = [2]
c = [3]
z = np.array(a + b + c)  # Lists can be concatenated using the `+` operator. Then, to make a numpy array, just call the constructor
© www.soinside.com 2019 - 2024. All rights reserved.