【问题标题】:infinite assignment in python list? [duplicate]python列表中的无限赋值? [复制]
【发布时间】:2013-07-19 17:45:02
【问题描述】:

我遇到了这个问题。代码:

>>> values = [0, 1, 2]
>>> values[1] = values
>>> values
[0, [...], 2]

我期望的结果是:

[0, [0, 1, 2], 2]

这是对 python 列表的无限赋值吗?幕后是什么?

谢谢。

【问题讨论】:

  • 没有自引用列表
  • What is behind the scene:阅读此Q&A:What is […] in Python
  • @GrijeshChauhan 谢谢,非常有帮助!
  • 欢迎您的 lulyon :)

标签: python list infinite


【解决方案1】:

您将与第二个元素相同的列表放入其自身。所以内部列表的第二个元素又是它自己。

您需要复制初始列表以避免递归:

>>> values[1] = values[:]

【讨论】:

    【解决方案2】:

    你有一个递归列表。 values[1] 是对 values 的引用。如果您想存储values 的值,您需要复制它,最简单的方法是

    values[1] = values[:]
    

    【讨论】:

      【解决方案3】:

      你需要复制它:

      values[1] = values[:]
      

      【讨论】:

      【解决方案4】:
      >>> values = [0, 1, 2]
      >>> values[1] = values
      

      你说values[1]values,也就是[0, 1, 2],用values代替1,现在values[0, 1, 2],用values代替1,[0, 1, 2] , 用values 代替1, [0, 1, 2], 用values 代替1,[0, 1, 2], 用values 代替1, [0, 1, 2], 用values 代替1 ... ... ...

      【讨论】:

      • +1 有趣且令人印象深刻!
      猜你喜欢
      • 1970-01-01
      • 2019-05-08
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      相关资源
      最近更新 更多