Python - 只能连接列表而不是浮动列表

新手上路,请多包涵

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

 n = 100
table = [[0]*n for x in range(n)]
array1 = [[0] for i in range(n)]
mini = array1[1] + table[1][1]

我正在尝试让 mini 存储作为 array1[1] 和表 [1][1] 的值的结果的整数。但我收到此错误:

 TypeError: can only concatenate list (not "float") to list

我一定缺少一些简单的东西。当我只打印 table[1][1] 时,我得到 0,那么为什么 table[1][1] 不被视为 0(即 0 + 0)?

原文由 user16647 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 842
2 个回答
  • table[1] is indeed [0]*1 which is [0] , and table[1][1] is indeed 0 .

  • 但是 array[1][0] ,这是一个列表

  • 因此你尝试做 array1[1] + table[1][1] 实际上是 [0] + 0

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

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

原文由 ninjagecko 发布,翻译遵循 CC BY-SA 3.0 许可协议

那么为什么 table[1][1] 不被视为只是 0

它是 - 但是 0 不能添加到 array1[1]+ 。就像错误信息所说的那样。 + 用于将两个 list 加在一起:

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

If array1[1] is intended to be a float rather than a list , then array1 should store numbers rather than lists.代码 array1 = [[0] for i in range(n)] 使—中的每个元素成为 array1 [0] ,即列表。

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

原文由 Karl Knechtel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题