Python-只能将列表连接到列表,而不能将浮点连接到列表

Python-只能将列表连接到列表,而不能将浮点连接到列表,python,concatenation,Python,Concatenation,我知道我只能连接相似类型的东西,但我真的很困惑为什么下面的东西是不同类型的 n = 100 table = [[0]*n for x in range(n)] array1 = [[0] for i in range(n)] mini = array1[1] + table[1][1] 我试图将mini-store设置为数组1[1]和表[1][1]值的结果的整数。但我得到了这个错误: TypeError: can only concatenate list (not "float") to l

我知道我只能连接相似类型的东西,但我真的很困惑为什么下面的东西是不同类型的

n = 100
table = [[0]*n for x in range(n)]
array1 = [[0] for i in range(n)]
mini = array1[1] + table[1][1]
我试图将mini-store设置为数组1[1]和表[1][1]值的结果的整数。但我得到了这个错误:

TypeError: can only concatenate list (not "float") to list
我一定错过了一些简单的东西。当我只打印表[1][1]时,我得到0,那么为什么表[1][1]不被视为仅0(即0+0)?

  • 表[1]
    确实是
    [0]*1
    这是
    [0]
    ,而
    表[1][1]
    确实是
    0

  • 但是
    数组[1]
    [0]
    ,它是一个列表

  • 因此,您尝试执行的
    array1[1]+表[1][1]
    实际上是
    [0]+0

要在将来调试此类内容,请打印解释器抱怨的表达式的每个部分:

print(array1[1])
print(table[1][1])

查看
array1
包含的内容:

>>> array1[1]
[0]
这不是一个用零填充的列表,而是一个用一堆列表填充的列表,每个列表都包含一个零

您可能需要这一行:

array1 = [[0] for i in range(n)]
为此:

array1 = [0 for i in range(n)]

table
array1
都是整数列表(本例中为0)。但是

是一个整数列表,而

table[1][1]
是一个整数。您可以使用切片解决此问题,如下所示:

mini = array1[1] + table[1][1:2]
这导致
mini
等于

[0, 0]

切片
表[1][1:2]
本身就是一个包含单个元素的列表(
表[1][1]
),由于允许串联列表,因此它可以工作。

您的变量
数组1
是一个列表,其中每个列表对于
范围(n)
中的i只有一个元素0。也就是说,
array1[1]=[0]
,而不是
array1[0]=0
。这就是类型不匹配的原因


另外,不要忘记Python是基于0的,而不是基于1的。在这里它不会导致错误,但似乎违背了您将[1]作为列表中第一个插槽的想法,当[0]为时。

打印每个操作数时,您将得到以下输出:

>>> array1[1]
[0]
>>> table[1][1]
0
第一个是列表,第二个是单个整数。因此,它显然失败了

因此,您需要使用
array1[1][0]
添加整数值,或者使用
table[1]
连接列表

so why is table[1][1] not treated as just 0 (I.e. 0 + 0)?
是的。但这不是你可以用
+
添加到
数组1[1]
中的东西。这正是错误消息所说的<代码>+用于将两个
列表添加到一起:

[1, 2, 3] + 4 # WRONG: can't concatenate a non-list with a list
[1, 2, 3] + [4] # RIGHT: concatenates the two lists, producing [1, 2, 3, 4]
如果您的意思不是让
array1[1]
成为一个列表,而是一个数字,那么当您构建
array1
时,您应该在其中存储数字,而不是列表。设置代码使
array1
成为多个值的列表(
n
),每个值都是
[0]
,即列表

也就是说,请记住数组索引以0开头


(我也不知道你所说的“数组1[1]的结果和表[1][1]的值的平方”是什么意思)。

打印数组1
-它是一个数组数组。这是你期望的吗?问题不在于
表1
,而在于
数组1
@和
列表
<代码>数组
在Python中的意思完全不同。谢谢。这是我的第一个Python程序,所以我知道我会错过一些东西。
[1, 2, 3] + 4 # WRONG: can't concatenate a non-list with a list
[1, 2, 3] + [4] # RIGHT: concatenates the two lists, producing [1, 2, 3, 4]