1
36
Python标准库中没有“list slice”类(也没有内置的)。因此,您确实需要一个类,尽管它不需要很大——特别是如果您满足于“只读”和“紧凑”切片的话。例如。:
这有一些限制(不支持“切片”),但在大多数情况下可能是可以的。
要使这个序列r/w,您需要添加
|
2
30
也许只需要使用numpy数组:
returns a view ,不是副本:
改变
|
3
8
然而,作为一个生成器,您只能浏览列表一次,如果您删除的元素比您所请求的多,它将爆炸
|
4
4
子类化
代码
演示
|
5
4
https://gist.github.com/mathieucaroff/0cf094325fb5294fb54c6a577f05a2c1 上面的链接是一个基于python3范围的解决方案,可以被切片和 以恒定时间索引。
它支持切片、相等比较、字符串转换(
创建SliceableSequenceView的SliceableSequenceView不会减慢速度 sequenceView.py
|
6
1
buffer type 就是你要找的。 从链接页粘贴示例:
|
7
1
一旦你从一个列表中选取一个片段,你就会创建一个新的列表。好的,它将包含相同的对象,因此只要涉及列表中的对象,它就将是相同的,但是如果修改切片,则原始列表将保持不变。
例子:
|
8
0
像这样做
编辑:
我迟迟才意识到这是行不通的,因为
|
9
0
实际上,自己使用
因此,您只需要一个对象类,其中包含对原始序列的引用和一个范围。下面是这样一个类的代码(我希望不是太大):
用法:
|
10
-2
如果要按顺序访问“视图”,则可以使用itertools.islice(..) You can see the documentation for more info .
|
Toniq · javascript为php保存多维数组 1 年前 |
Jannis · Java中数组的怪异行为 1 年前 |
callum · 如何识别数组中与给定序列不匹配的元素? 1 年前 |
tenfour · 如何使用数组元素的索引初始化数组元素 2 年前 |
Guillaume · 使用操作从Python列表创建numpy数组 2 年前 |
maxMas · Swift 5:为什么会出现索引超出范围错误? 2 年前 |