更新:ビット文字列モジュールのステップ インの動作は、バージョン 3 でより従来の意味に変更されました。以下の回答は、ビット文字列バージョン 2 に関するものです。
私はビット文字列モジュールの作成者なので、助けてくれるかもしれません (または、少なくとも説明してください!) がstep
乗数を提供するために使用されることに注意してください。これは、バイトまたは他のビットに関して物事を指定する場合に役立ちます倍数 (s[a:b:c]
と同じs[a*c:b*c]
です)。
あなたが望むと思われる動作については、そのようなコンパクトな構文はありません。あなたがそれを何に必要としているか知りたいです-私はそれの良い使い方を思いつかなかったので、ステップの他の使い方が選ばれたのです. 私が考えることができる最高の同等物は
s = ConstBitArray().join(mylist[i:i+1] for i in range(start, stop, step))
ただし、これは非常に高速ではない可能性があります。
すべてまたは一部のビットが設定/設定解除されていることを確認するだけの場合は、次のようなものを使用できます
mylist.all(True, range(start, stop, step))
また
mylist.any(False, range(start, stop, step))
bitarray
別の、おそらくより高速な方法は、スライスにモジュールを使用するように切り替えることです。
import bitarray
s = ConstBitArray(bitarray.bitarray(mylist)[start:stop:step])
このスライシング動作だけが主に必要な場合は、bitarray を使用したほうがよいかもしれませんが、Python 3 ではまだ利用できません。