2017-06-04 5 views
-1

関数内のbytesパラメータの要素を削除します。パラメータを変更し、新しいオブジェクトを返さないようにします。コピーすることなくバイトオブジェクトの最初のn個の要素を削除します。

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:] 

ここで解決策はありますか?

+2

私は思っています*あなたはこれを非従来型の方法でのみ行うことができます。バイトは不変ですが、新しいバイトオブジェクトを作成せずに突然変異を許可しません。 –

+0

これは吸う..しかし、私はその正確な時点でそれを必要とするだけなので、多分非独裁的な方法は大丈夫だろう –

+0

なぜこの要件が満たされているのですか?多分あなたが精緻化すれば、別の解決策が見つかるかもしれません。 –

答えて

1

だけbytearrayを使用します。

>>> a = bytearray(b'abcdef') 
>>> del a[1] 
>>> a 
bytearray(b'acdef') 

それはほとんどbytesが、変更可能なようだ:

bytearrayクラスは範囲内の整数のミュータブルなシーケンス0 < = X < 256であることが持っていますMutable Sequence Typesに記載されている変異可能配列の通常の方法のほとんど、ならびにbytes型が有するほとんどの方法については、Bytes and Bytearray Operationsを参照のこと。

関連する問題