Обновление: Поведение степпинга в модуле цепочки битов изменилось в версии 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.