use*_*744 3 python arrays python-3.x
我有两个bytearrays:
ba1 = bytearray(b'abcdefg')
ba2 = bytearray(b'X')
Run Code Online (Sandbox Code Playgroud)
我怎样才能插入("前置")ba2的ba1?
我试着这样做:
ba1.insert(0, ba2)
Run Code Online (Sandbox Code Playgroud)
但这似乎不正确.
我当然可以这样做:
ba2.extend(ba1)
ba1 = ba2
Run Code Online (Sandbox Code Playgroud)
但是如果ba1非常大呢?这是否意味着整体上不必要的应对ba1?这个记忆效率高吗?
我怎么能预装一个bytearray?
你可以这样做:
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)