我想删除函数中bytes
参数的元素。我想要更改参数,而不是返回一个新对象。
def f(b: bytes):
b.pop(0) # does not work on bytes
del b[0] # deleting not supported by _bytes_
b = b[1:] # creates a copy of b and saves it as a local variable
io.BytesIO(b).read(1) # same as b[1:]
这里有什么解决方案?
答案 0 :(得分:1)
只需使用bytearray
:
>>> a = bytearray(b'abcdef')
>>> del a[1]
>>> a
bytearray(b'acdef')
它几乎像bytes
但可变:
bytearray
类是0 <= x <0的范围内的可变整数序列。 256. Mutable Sequence Types中描述了大多数常用的可变序列方法,以及bytes
类型的大多数方法,见Bytes and Bytearray Operations。
答案 1 :(得分:0)
使用上面@MSeifert所示的字节数组,可以使用slicing
提取前n个元素。>>> a = bytearray(b'abcdef')
>>> a[:3]
bytearray(b'abc')
>>> a = a[3:]
a
bytearray(b'def')