一个列表附加在另一个列表中,另一个列表是第一个列表的副本,为什么要创建第一个列表的无限嵌套列表?

One list is appended in another list and another list is copy of first list, Why this create infinite nested list of first list?

提问人:Pritesh Tadvi 提问时间:11/15/2023 最后编辑:Pritesh Tadvi 更新时间:11/16/2023 访问量:26

问:

有两个列表 r = [9,8,7] 和 h = [6,5,4],如果 h 附加在 r 中,它按预期工作正常。 但是,如果 h 是 r 的新分配副本,并且 h 被附加到 r 中,那么它就是无限嵌套列表,而且 h 和 r 相同,这怎么可能,一个附加函数导致了这种情况?


r = [9,8,7]
h = [6,5,4]
h = r
print(r, h)
r.append(h)
print(r)
print(h)

print(r[3][3][3])
print(h[3][3][3])
python-3.x 列表

评论

0赞 jasonharper 11/15/2023
h的另一个名称。代码中的任何内容都不会复制任何内容。r

答:

0赞 Suramuthu R 11/16/2023 #1

通过声明 r = h,您没有提到 r 的值与 h 的值相同。相反,您提到 r 和 h 是一回事。因此,在将 h 附加到 r 之后,它将 h 视为 r 并继续附加。

如果想要为另一个变量提供相同的值,则可以使用

h = r.copy()

评论

0赞 Pritesh Tadvi 11/16/2023
谢谢兄弟的解释,帮了大忙。🙌
0赞 Suramuthu R 11/20/2023
@PriteshTadvi,Stackoverflows说,当答案真正有用时,你就会投赞成票。(投票赞成![stackoverflow.com/help/privileges/......