#python #list #binary
#python #Список #двоичный
Вопрос:
У меня есть список чисел, которые являются индексами. Я хочу получить двоичное число с битами, установленными для этих индексов в списке. Например,
my_list=[0,2]
Я хочу получить двоичное число, установленное в index 0 and index 2: 101 (or 5 in int)
Ответ №1:
Вы можете использовать сдвиг битов для установки определенных битов и двоичное или |
для их объединения:
>>> bin(1 << 2)
0b100
>>> bin(1 << 0)
0b1
>>> bin(1 << 0 | 1 << 2)
0b101
Это позволяет устанавливать биты для каждой записи в списке:
>>> result = 0
>>> for position in my_list:
... result |= 1 << position
...
>>> bin(result)
0b101
Для больших чисел использование reduce
и map
может быть быстрее:
>>> from functools import reduce # loop-augmented-assignment
>>> from operator import __or__ # the | operator
>>>
>>> # / result |= ... / 1 << position
>>> # v v
>>> reduce(__or__, map(lambda pos: 1 << pos, my_list))
5
Комментарии:
1. Большое вам спасибо @MisterMiyagi.
2. Пожалуйста, примите ответ как правильный, если он решил вашу проблему.