莫回无
Python标准库中没有“列表切片”类(也不是内置的)。因此,您确实需要一个类,尽管它不必很大-尤其是如果您对“只读”和“紧凑”切片感到满意。例如:import collectionsclass ROListSlice(collections.Sequence): def __init__(self, alist, start, alen): self.alist = alist self.start = start self.alen = alen def __len__(self): return self.alen def adj(self, i): if i<0: i += self.alen return i + self.start def __getitem__(self, i): return self.alist[self.adj(i)]这有一些局限性(不支持“切片”),但对于大多数目的来说可以。为了使这个序列R / W你需要添加__setitem__,__delitem__和insert:class ListSlice(ROListSlice): def __setitem__(self, i, v): self.alist[self.adj(i)] = v def __delitem__(self, i, v): del self.alist[self.adj(i)] self.alen -= 1 def insert(self, i, v): self.alist.insert(self.adj(i), v) self.alen += 1
守着一只汪
也许只使用一个numpy数组:In [19]: import numpy as npIn [20]: l=np.arange(10)基本切片numpy数组返回一个view,而不是一个副本:In [21]: lv=l[3:6]In [22]: lvOut[22]: array([3, 4, 5])改变l影响lv:In [23]: l[4]=-1In [24]: lvOut[24]: array([ 3, -1, 5])改变lv影响l:In [25]: lv[1]=4In [26]: lOut[26]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])