0

如果我有一个 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)

4

2 回答 2

4

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

>>> from itertools import repeat
>>> data = bytearray([0])
>>> data.extend(repeat(1, 3))
>>> data
bytearray(b'\x00\x01\x01\x01')
于 2016-04-10T02:12:45.417 回答
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')

* 来源:在我的机器上工作;YMMV!尝试使用 4000000000 的计数,在乘以列表时内存不足,但在乘以字节数组时没有。count(600000000)的较小值在乘以列表时使用的内存是乘以字节数组时的 8 倍以上。

于 2016-04-10T02:04:33.923 回答