如何将值的多个副本附加到Python bytearray?

时间:2016-04-10 01:40:02

标签: python arrays list python-bytearray

如果我有一个Python列表(data)和两个整数(icount),我可以轻松地将counti个副本附加到data

>>> data = [0]
>>> i, count = 1, 4
>>> data += [i] * count
>>> data
[0, 1, 1, 1, 1]

如果databytearray,我该怎么做?是否有必要首先创建一个列表,例如data += bytearray([i] * count)

2 个答案:

答案 0 :(得分:2)

  

是否有必要先创建一个列表,例如data += bytearray([i] * count)

这确实是一种方法。您可以对字节数组(而不是列表)执行乘法运算,这对于count *的大值更快,内存效率更高,更多更快

>>> data = bytearray([0])
>>> i, count = 1, 4
>>> data += bytearray((i,)) * count
>>> data
bytearray(b'\x00\x01\x01\x01\x01')

*来源:在我的机器上工作;因人而异!尝试计数4000000000,在列表乘以时内存不足,但在乘以bytearray时则没有。较小的count(600000000)值在乘以列表时使用的内存大于乘以bytearray时的8倍。

答案 1 :(得分:2)

如果您不介意使用import我建议使用itertools.repeat

>>> from itertools import repeat
>>> data = bytearray([0])
>>> data.extend(repeat(1, 3))
>>> data
bytearray(b'\x00\x01\x01\x01')