长列表名称和修改的别名
Alias for long list name and modification
我有一个嵌套数据结构(例如 mydict[names[num]]),很难在代码中读取。因此我想创建一个代理(别名)并用它来修改这个结构。
long_name = [1,2,3]
short = long_name
assert id(long_name) == id(short)
short.append(4)
assert id(long_name) == id(short)
short = [n**2 for n in short]
assert id(long_name) == id(short) # AssertionError
考虑到 id(a) = id(b) 上的 AssertionError,我是否理解正确 python 在理解和分配期间将 short 和 long_name 分开独立内存?
在实践中,我的结构包含数百万个长字符串,因此占用了大量 space(内存),因此有此顾虑。
当long_name和short与同一个对象关联时,您可以多次调用它的方法like 和两个变量都不会改变,但是 comprehension 会创建一个新对象,你会 link 你的 short 变量给它。现在你有 2 个变量与 2 个不同的对象和 2 个不同的 links.
我有一个嵌套数据结构(例如 mydict[names[num]]),很难在代码中读取。因此我想创建一个代理(别名)并用它来修改这个结构。
long_name = [1,2,3]
short = long_name
assert id(long_name) == id(short)
short.append(4)
assert id(long_name) == id(short)
short = [n**2 for n in short]
assert id(long_name) == id(short) # AssertionError
考虑到 id(a) = id(b) 上的 AssertionError,我是否理解正确 python 在理解和分配期间将 short 和 long_name 分开独立内存?
在实践中,我的结构包含数百万个长字符串,因此占用了大量 space(内存),因此有此顾虑。
当long_name和short与同一个对象关联时,您可以多次调用它的方法like 和两个变量都不会改变,但是 comprehension 会创建一个新对象,你会 link 你的 short 变量给它。现在你有 2 个变量与 2 个不同的对象和 2 个不同的 links.