lst
Out[66]: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
In [67]: get_items_by_bits_of_num(7)
Out[67]: ['a', 'b', 'c']
In [68]: get_items_by_bits_of_num(28)
Out[68]: ['c', 'd', 'e']
Какие есть идеи? Хочется, чтобы функция была максимально быстрой, так как нужно обрабатывать большое количество чисел в цикле.
Я сделал так, но мне кажется можно или ускорить, или сделать по-другому: def int2bin(num): n = 1 while n <= num: # Slower # yield bool(n & num) # Faster if n & num: yield 1 else: yield 0 n <<= 1 def get_items_by_bits_of_num(num): return [lst[i] for i, bit in enumerate(int2bin(num)) if bit]
Обсуждают сегодня