我偶然发现在Python中您可以编写如下内容:
l = list()
for i in range(5):
l.append(l)
如果我打印出l是什么样的话,
[[...], [...], [...], [...], [...]]
现在我可以做类似的事情了
l[0][0][0][0]...[0]
这将返回完全相同的列表。
我的短毛绒未发现我在代码中犯的错误,因此可能很难发现。所以我的问题是:为什么允许列表追加自身?您能做什么用?
如果没有用,则应禁止使用。
答案 0 :(得分:2)
您不允许在列表中使用列表的标准是它没有用。但是很难证明这是不正确的。也许没有人知道还的用途,但这并不是将来有人会使用的。同时,在解释将对象添加到列表中存在哪些异常以及实现这些异常方面,这两种语言均增加了成本。
如果您可以证明允许向其自身添加列表是有害,那么对这种语言进行更改的理由就更强了。但是“我不小心键入了错误的变量名”并不是一个有力的论点。
答案 1 :(得分:1)
为什么允许列表附加到自身?请记住,在python中,所有内容都是参考。列表只是对对象的引用序列。由于列表是对象,因此可以被另一个列表引用。当列表引用一个对象时,它实际上不像该对象现在包含在列表中,它只是序列中的单个元素现在是对该对象的引用。尽管循环引用有时很糟糕,但有时还是有用的,实际上这里没有任何破坏。请记住,包含自身的列表实际上只是一个引用自身的列表。
答案 2 :(得分:-1)
为什么允许列表追加自身?
您认为这是一个错误并且不应该被允许的假设是不正确的。作为工程师,由我们决定是否适合我们遇到的情况。我将解决这个问题,为什么您认为不应这样做?
您可以用它做什么?
将数组添加到数组实际上是很常见的。我可以想象这样一种情况,您必须从5个相同的数组开始,对每个数组执行不同的计算,然后比较结果。这将是实现这一目标的一种方式。