您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我可以在Python列表上创建“视图”吗?

我可以在Python列表上创建“视图”吗?

Python标准库中没有“列表切片”类(也不是内置的)。因此,您确实需要一个类,尽管它不必很大-尤其是如果您对“只读”和“紧凑”切片感到满意。例如:

import collections

class 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
python 2022/1/1 18:38:54 有252人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶