前缀bytearray:TypeError:需要一个整数

use*_*744 3 python arrays python-3.x

我有两个bytearrays:

ba1 = bytearray(b'abcdefg')
ba2 = bytearray(b'X')
Run Code Online (Sandbox Code Playgroud)

我怎样才能插入("前置")ba2ba1

我试着这样做:

ba1.insert(0, ba2)
Run Code Online (Sandbox Code Playgroud)

但这似乎不正确.

我当然可以这样做:

ba2.extend(ba1)
ba1 = ba2
Run Code Online (Sandbox Code Playgroud)

但是如果ba1非常大呢?这是否意味着整体上不必要的应对ba1?这个记忆效率高吗?

我怎么能预装一个bytearray

mar*_*eau 9

你可以这样做:

ba1 = bytearray(b'abcdefg')
ba2 = bytearray(b'X')

ba1 = ba2 + ba1
print(ba1)  # --> bytearray(b'Xabcdefg')
Run Code Online (Sandbox Code Playgroud)

为了使开头的插入更明显,您可以使用它:

ba1[:0] = ba2  # inserts ba2 into beginning of ba1
Run Code Online (Sandbox Code Playgroud)

另请注意,作为一个特殊情况,您知道ba2只有一个字节长,这将工作:

ba1.insert(0, ba2[0])  # valid only if len(ba2) == 1
Run Code Online (Sandbox Code Playgroud)

  • @Downvoter:这个答案出了什么问题?+1因为这适合我. (3认同)