У меня есть строка и двоичная последовательность (которая является целым числом 0 и 1)
sent1 = 'ERAGSJKDLLDERRR'
bin_seq = 100101010100011
Поэтому я хочу получить буквы, сравнивая с bin_seq
.Таким образом, он вернет букву, если значение bin_seq
равно 1 в соответствующих позициях.
Таким образом, оно должно вернуть:
'EGJDLRR'
Я использую itertools.compress
для вышеуказанной операции.
from itertools import compress
sent1 = 'ERAGSJKDLLDERRR'
bin_seq = 100101010100011
print("".join(list(itertools.compress(sent1, str(bin_seq)))))
, который возвращает результат:
'ERAGSJKDLLDERRR'
Я знаю, что могу сделать это легко, используя цикл for
:
sent_new = []
for i,j in zip(sent1, str(bin_seq)):
if j == '1':
sent_new.append(i)
print("".join(sent_new))
НоЯ больше беспокоюсь о том, почему он не дает ожидаемый результат с itertools.compress
.