我正在尝试连接 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))
为什么?
我不确定你正在使用什么库(
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