【问题标题】:Why does Python extend output [[...]] [duplicate]为什么Python扩展输出[[...]] [重复]
【发布时间】:2015-11-29 18:39:48
【问题描述】:

我的讲师设置了几个关于python的问题,这一个让我很困惑,我不明白发生了什么。

x = [[]]
x[0].extend(x)

Python 告诉我,运行后 x 是 [[...]]... 是什么意思?

当下面的结果只是[[]]时,我会更加困惑

y = [] # equivalent to x[0]
x = [[]]
y.extend(x)

如果y 被计算为[[]] 不应该x 被计算为[[[]]]

扩展是做什么的? ... 是什么意思?

【问题讨论】:

  • 因为x 引用了自己,所以str(x) 是一个无限循环。很高兴python能抓住它。

标签: python list python-3.x


【解决方案1】:

... 表示该列表包含一个递归循环,即在某种程度上,某些东西包含了它自己。这是因为你用x 扩展了x,所以你基本上把x 放在了它自己里面。

第二个示例中没有...,因为y 是一个不同的对象。虽然它恰好 等于x[0],因为两者都是空列表,但它们不是同一个空列表。

【讨论】:

  • 那么通过使用x 扩展x[0],它会在x[0] 创建对x 的引用,而不是将x 包含的数据复制到x[0]?对吗?
  • @CGA1123:基本上,是的。 (更具体地说,它在x[0] 的列表中创建了对x[0] 的引用,因为extend 添加了其参数的内容,而不是参数本身。但是你是对的,它正在创建对相同的引用对象,而不是复制数据,这是关键。)
猜你喜欢
  • 2019-10-18
  • 1970-01-01
  • 2011-08-07
  • 2016-12-24
  • 2012-02-05
  • 2016-09-20
  • 2020-02-28
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多