如果我有一个 Python 列表 ( data) 和两个整数 ( iand count),我可以轻松地附加tocount的副本:idata
>>> data = [0]
>>> i, count = 1, 4
>>> data += [i] * count
>>> data
[0, 1, 1, 1, 1]
data如果是 a ,我该怎么做bytearray?是否有必要先创建一个列表,例如data += bytearray([i] * count)?
如果我有一个 Python 列表 ( data) 和两个整数 ( iand count),我可以轻松地附加tocount的副本:idata
>>> 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 倍以上。