如果我有一个 Python 列表 ( data
) 和两个整数 ( i
and count
),我可以轻松地附加tocount
的副本:i
data
>>> data = [0]
>>> i, count = 1, 4
>>> data += [i] * count
>>> data
[0, 1, 1, 1, 1]
data
如果是 a ,我该怎么做bytearray
?是否有必要先创建一个列表,例如data += bytearray([i] * count)
?
如果我有一个 Python 列表 ( data
) 和两个整数 ( i
and count
),我可以轻松地附加tocount
的副本:i
data
>>> data = [0]
>>> i, count = 1, 4
>>> data += [i] * count
>>> data
[0, 1, 1, 1, 1]
data
如果是 a ,我该怎么做bytearray
?是否有必要先创建一个列表,例如data += bytearray([i] * count)
?
如果你不介意使用import
我会建议itertools.repeat
。
>>> from itertools import repeat
>>> data = bytearray([0])
>>> data.extend(repeat(1, 3))
>>> data
bytearray(b'\x00\x01\x01\x01')
是否有必要先创建一个列表,例如
data += bytearray([i] * count)
?
这确实是一种方法。您可以对字节数组(而不是列表)进行乘法运算,这对于较大的 * 值来说内存效率更高,速度count
更快:
>>> data = bytearray([0])
>>> i, count = 1, 4
>>> data += bytearray((i,)) * count
>>> data
bytearray(b'\x00\x01\x01\x01\x01')
* 来源:在我的机器上工作;YMMV!尝试使用 4000000000 的计数,在乘以列表时内存不足,但在乘以字节数组时没有。count
(600000000)的较小值在乘以列表时使用的内存是乘以字节数组时的 8 倍以上。