长列表名称和修改的别名

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_nameshort与同一个对象关联时,您可以多次调用它的方法like 和两个变量都不会改变,但是 comprehension 会创建一个新对象,你会 link 你的 short 变量给它。现在你有 2 个变量与 2 个不同的对象和 2 个不同的 links.