我试着使用一个列表列表,并希望获取列表列表中的一个元素,使用它,然后将其附加到另一个列表中。你知道吗
我发现.append()
有我意想不到的行为:
def li_of_li_test (li):
l = li[0]
l.append(0)
return li
函数应该只返回li
,但是。。。你知道吗
print li_of_li_test ([[1,2,3],[4,5]])
退货:
[[1, 2, 3, 0], [4, 5]]
我该怎么做才能让它回来
[[1,2,3],[4,5]]
Tags:
我在实数代码中假设:
将试图保持
li
参数不变,但将li
中的第一个子list
放在其他list
中。您认为l = li[0]
会创建子list
的一个新副本来使用,但它不是这样做的;它只是使l
成为另一个对li[0]
中存储的相同list
的引用。如果要复制list
,可以通过以下方法实现简单的浅层复制:或者,您可以使用更深入的工作来复制
list
结构的组件,而不仅仅是list
结构:不管怎样,简单的
append
和类似的l
都不会再影响li
。你知道吗如果您需要对不同的子列表进行许多突变,
deepcopy
将li
作为一个整体可能是有意义的;您可以在前面做一次,并且不需要担心在那之后li
的破坏性突变。你知道吗在python中,值是通过引用传递的。列表是一个可变结构。你知道吗
以下方法可以解决您的问题:
相关问题 更多 >
编程相关推荐