вложенный список понимания: переменная не существует, даже если внутри цикла

#python

#python

Вопрос:

input = [str(bin(ord(char)))[i] for i in range(len(str(bin(ord(char)))), 1, -1) for char in input]

Это мой код, цель состоит в том, чтобы отформатировать входную строку в массив в формате битов в порядке наименьшего окончания.

Насколько я понимаю, наиболее подходящим оператором for должен быть самый внешний цикл, но 2-й символ, используемый при создании диапазона, в этот момент не определен.

Является ли мое предположение неверным в отношении интерпретации как внешнего цикла или я делаю что-то не так?

Я хочу перебирать все символы во входных данных, а затем перебирать все биты в обратном порядке для каждого символа.

Комментарии:

1. Вы захотите изменить порядок этих двух циклов for . Первая является внешней в понимании списка.

2. Для двойных пониманий, которые не являются вложенными, for части идут в обратном порядке. Попробуйте записать ее как for char in input for i in range(len(str(bin(ord(char)))), 1, -1)

3. Это сработало, не уверен, почему моя информация перевернулась. Спасибо вам обоим!

Ответ №1:

Похоже, вы пытаетесь изменить битовую строку,

этот фрагмент изменяет битовую строку

 ["".join(reversed(bin(ord(char))[2:])) for char in input]
  

имейте в виду, что первые 2 символа двоичной строки есть '0b' , и они не являются частью значения

Комментарии:

1. На мой вопрос был дан ответ в комментариях, но это более простой способ решить мою проблему, спасибо!