>>> a = [1,2,3,4]>>> b = tuple(a)>>> b(1,4)>>> a[0] = 2>>> b # was hoPing b[0] to be 2(1,4)
是否有一种简单的方法可以在此列表上创建一个列表支持的“视图”,该视图是不可变的(此视图上的 *** 作),但是反映了支持列表中发生的任何更改?
我意识到之前已经问过这个问题,但没有一个回复解决这个视图支持列表关系(实际上一些评论甚至表明元组按照我希望的方式工作,但上面的代码片段暗示了其他情况).
解决方法 如果您不想复制数据,并希望传递不可更改的“列表”,一种方法是创建代理对象,列表副本,禁用所有更改方法,并参考读取方法到原始列表 – 一些东西:class ReadonlyList(List): def __init__(self,other): self._List = other def __getitem__(self,index): return self._List[index] def __iter__(self): return iter(self._List) def __slice__(self,*args,**kw): return self._List.__slice__(*args,**kw) def __repr__(self): return repr(self._List) def __len__(self): return len(self._List) def NotImplemented(self,**kw): raise ValueError("Read Only List proxy") append = pop = __setitem__ = __setslice__ = __delitem__ = NotImplemented
当然,实现您认为必要的其他任何方法,或者提出错误(或忽略写入指令) – 或者访问内部列表中的相应对象.
总结以上是内存溢出为你收集整理的Python中的不可变列表全部内容,希望文章能够帮你解决Python中的不可变列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)