如何解决如何为复杂代码分配新变量?
我要做的是为复杂的代码创建一个简单的变量。例如,
list1 = [['apple','banana'],['cat','dog']]
new = list1[0][1]
new = 'bonono'
print(list1[0][1]) # The result is 'banana',but I hope this to be 'bonono'
我不想每次都输入list1[0][1]
,而只想输入new
以获得相同的值。
如果这是C语言,也许我可以使用指针,但是在python中找不到方法。
我读过浅拷贝或深拷贝,但似乎两者都不一样。因此copy.copy()
也不起作用。
谁能告诉我如何?
解决方法
Python是一种基于参考的语言,并且字符串是不可变的,因此当您设置new = 'bonono'
时,您没有更改同一对象,而是引用了另一个对象。
您可以执行以下操作:
list1 = [['apple','banana'],['cat','dog']]
new = list1[0][1] = 'bonono'
但是您必须确保每次都替换列表条目。
这里有一些细节,向您展示引用的最新情况:
>>> from sys import getrefcount
>>> list1 = [['apple','dog']]
>>> getrefcount('banana')
# One ref in list,one in gc,one in getrefcount call
3
>>> new = list1[0][1]
>>> getrefcount('banana')
# One ref in list,one to new,one in getrefcount call
4
>>> new = 'bonono'
>>> getrefcount('banana')
# One ref in list,one in getrefcount call
3
>>> getrefcount('bonono')
3
# One ref to new,one in getrefcount call
,
Python是基于引用的,因此,当您将new的值设置为其他值时,您将引用另一个对象,因为字符串是不可变的。而且python没有指针。因此,每次更改新值时,您都可以这样做:
new,list[0][1] = 'bonno','bonno'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。