Python字节数组初始化从突变序列



我想生成一个字节数组,其中包含从某个初始值开始的值序列,例如:

def generateTestcase(n, init):
v = init
data = bytearray(n)
for i in range(n):
data[i] = v
# mutate v in some arbitrary fashion, but stay a valid byte value...
v = (v+1 if v < 255 else 0)

这是可行的,我只是想知道是否有一种更Python的语法,可以将初始化传递到字节数组构造函数中,类似于如何使用范围对象:bytearray(range(20))

理想情况下,解决方案不一定会使v增加1。也许它会加倍,或者加3,或者其他什么,总是将结果包装成一个字节。

是创建自定义范围类对象的最佳解决方案,还是有某种方法可以在这里使用lambda来捕获v&n并返回正确的值列表(最好不先在内存中创建完整的列表副本,但根据需要返回值(?

感谢

您可以编写一个生成器来定义自定义迭代器:

def generate(n, init):
v = init
for i in range(n):
yield v
# mutate v here
v = (v+1 if v < 255 else 0)

然后使用它:

bytearray(generate(79, 1))

这分离了生成数据和存储数据的独立关注点。

最新更新