没有副本的 Python 切片?

标签 python python-3.x slice

<分区>

有没有一种方法可以在 Python 3 中创建序列的“切片 View ”,其行为类似于常规切片但不创建序列切片部分的副本?更新原始序列时,“切片 View ”应反射(reflect)更新。

>>> l = list(range(100))
>>> s = Slice(l, 1, 50, 3)  # Should behave like l[1:50:3]
>>> s[1]
4
>>> l[4] = 'foo'
>>> s[1]  # Should reflect the updated value
'foo'

我可以编写自己的 Slice 类来执行此操作,但我想了解是否有内置方法。

最佳答案

使用islice来自 itertools

编辑:

我知道我在哪里误解了这个问题。 好吧,没有这样的事情。如果你想创建你的类,你必须:

  1. Slice 类中保留对原始列表的引用
  2. 定义 __iter____getitem____setitem__ 方法来处理带有索引转换的原始列表

关于没有副本的 Python 切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575009/

相关文章:

python - 从另一个脚本调用时 PyQt qlineEdit 为空

python - Emacs 和 python 。链接问题

python - 尽管所有图像都可下载,但请求无法从某个站点下载任何图像?

python - 在 Python 中使用 float 切片 ndarray

go - 当我在 Goroutine 中填充它时,为什么这张 map 是空的?

python - Python 标准库中是否有使用隐藏内置函数的变量名的 Python 代码?

python - 如何从数据框中绘制多条线

python - 为什么类似 set 的对象不支持像 .intersection() 这样的 set 方法?

python - 在 python 上找不到用于导入 csv 的文件。文件路径正确,一切都已安装

python - 在不使用 len() 的情况下切片到字符串的末尾