【问题标题】:appending giving strange value [duplicate]附加给出奇怪的值[重复]
【发布时间】:2021-05-16 10:19:21
【问题描述】:

我正在尝试添加两个列表 f 和 l,如下所示。 f 和 l 的形状不同,所以我将 f 的形状与 l 相似

f = [37.37, 34.26, 33.78, 33.82, 36.33]

f.append(f)

l = [[34.4 , 39.32, 35.61, 38.12, 34.11], 
     [33.1 , 35.14, 36.76, 33.66, 34.31]]
z = f + l

但我得到了这个奇怪的输出:

[37.37, 34.26, 33.78, 33.82, 36.33,
 [37.37, 34.26, 33.78, 33.82, 36.33, [...]],
 [34.4, 39.32, 35.61, 38.12, 34.11],
 [33.1, 35.14, 36.76, 33.66, 34.31]]

我没想到[...],所以我检查了 f 的值 它是

[37.37, 34.26, 33.78, 33.82, 36.33, [...]]

与以往不同,

谁能给我解释一下这里发生了什么我对python很陌生。

【问题讨论】:

  • 简答:使用extend 而不是append。您可以使用 append 将单个元素添加到列表中。如果该元素是一个列表,您最终会得到一个嵌套列表,这就是您输出中的 [...] 所代表的内容。
  • 如果您只想将列表翻倍,也可以使用 f *= 2 -- 这比 f.extend(f) IMO 更惯用。
  • @Samwise 我有点困惑,[...]的价值是什么
  • [...] 只是打印时缩短列表的一种方式。
  • 当你有一个引用自身的列表时使用这些省略号,否则天真的表示将是无限递归的

标签: python python-3.x list append


【解决方案1】:

您应该尝试f = [f, f] 而不是f.append(f)

您试图在列表的最后一个位置附加一个列表,从而导致嵌套列表([...]f 的缩写版本,由 print 函数使用)。

【讨论】:

    猜你喜欢
    • 2011-11-21
    • 2020-08-12
    • 2014-07-29
    • 1970-01-01
    • 2020-08-26
    • 2020-04-23
    • 2021-06-18
    • 2010-10-25
    • 2012-12-24
    相关资源
    最近更新 更多