Нахождение индекса первого и последнего 1 в двоичном числе - PullRequest
1 голос
/ 17 апреля 2020

Я хочу написать функцию, которая возвращает индекс первого и последнего 1 в двоичном числе.

, например:

binNumber = b'0001101'
first, last = findIndex(binNumber)
print("first index is ",first, " and last index is ", last)

, и результат будет : первый индекс 3, а последний индекс 6

Ответы [ 3 ]

2 голосов
/ 17 апреля 2020

Используйте методы index и rindex.

>>> binNumber.index(b'1')
3
>>> binNumber.rindex(b'1')
6

Будет выброшено ValueError, если нет 1.


Если нет особой причины, ваша binNumber - это объект bytes, сделайте его строкой и используйте binNumber.index('1') и binNumber.rindex('1').

1 голос
/ 17 апреля 2020

вы можете использовать find и rfind для этого.

>>> b'0001101'.find('1')
3
>>> 
>>> 
>>> b'0001101'.rfind('1')
6

Ваше определение будет

>>> def findIndex(binNumber):
        return binNumber.find('1'), binNumber.rfind('1')

>>> binNumber = b'0001101'
>>> first, last = findIndex(binNumber)
>>> first
3
>>> last
6
0 голосов
/ 17 апреля 2020

Измените binNumber на строку и используйте индекс.

Попробуйте этот код.

def findIndex(binNumber):
    start = str(binNumber)[2:].index('1')
    end = len(binNumber) - str(binNumber)[2:][::-1].index('1')
    return start, end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...