我正在实施一个数据结构,允许快速添加范围更新:
class RAUQ:
""" Allow 'l[s:e] += v' update and 'a[i]' query in O(log n)
>>> l = RAUQ([0, 10, 20]) ; l
[0, 10, 20]
>>> l[1]
10
>>> l[2] += 10 ; l
[0, 10, 30]
>>> l[0:2] += 3 ; l
[3, 13, 30]
>>> l[1:10] -= 4 ; l # Support usual out of bounds slices
[3, 9, 26]
"""
根据反汇编字节码,l[i] += v
表达式被转换为:
l.__setitem__(i, l.__getitem__(i).__iadd__(v))
我觉得很奇怪(在原地添加,并设置无论如何?)
那么,S.O.,用什么好的方法来实现这个呢
这是我想到的。做这项工作,但感觉不舒服
相关问题 更多 >
编程相关推荐