Как добавить строки в список?

Поэтому я пытаюсь добавить строки двоичного кода в str_msg = «Это сообщение!» final = '' . join ( format ( ord ( x ), 'b' ) для x в str_msg ) print ( final ), но вместо этого я добавляю каждый отдельный символ. Я новичок в python, поэтому я не совсем уверен, как это сделать сам (также при получении строк мне нужно игнорировать пробелы между каждой строкой двоичного кода)

binlist = []
for value in final:
    binlist.append(value)
print(binlist)

который дает:

1010100 1101000 1101001 1110011 100000 1101001 1110011 100000 1100001 100000 1101101 1100101 1110011 1110011 1100001 1100111 1100101 100001

но затем я пытаюсь создать список таким образом:

['1', '0', '1', '0', '1', '0', '0', ' ', '1', '1', '0', '1', '0', '0', '0', ' ', '1', '1', '0', '1', '0', '0', '1', ' ', '1', '1', '1', '0', '0', '1', '1', ' ', '1', '0', '0', '0', '0', '0', ' ', '1', '1', '0', '1', '0', '0', '1', ' ', '1', '1', '1', '0', '0', '1', '1', ' ', '1', '0', '0', '0', '0', '0', ' ', '1', '1', '0', '0', '0', '0', '1', ' ', '1', '0', '0', '0', '0', '0', ' ', '1', '1', '0', '1', '1', '0', '1', ' ', '1', '1', '0', '0', '1', '0', '1', ' ', '1', '1', '1', '0', '0', '1', '1', ' ', '1', '1', '1', '0', '0', '1', '1', ' ', '1', '1', '0', '0', '0', '0', '1', ' ', '1', '1', '0', '0', '1', '1', '1', ' ', '1', '1', '0', '0', '1', '0', '1', ' ', '1', '0', '0', '0', '0', '1']

Я получил:

' '.join(format(ord(x), 'b') for x in str_msg)

python,

1

Ответов: 4


3 принят

Выражение:

str_msg

использует выражение генератора для вывода каждого символа в строке: .joinпреобразуется в его значение ASCII, представленное в двоичном формате, которое затем передается в ' 'метод строки list(пробел). В результате вы получаете строку двоичного представления этой строки.

Из его звуков вы хотите иметь listстроку, содержащую двоичное представление каждого символа.

Это может быть достигнуто с помощью понимания списка, которое имеет тот же синтаксис, что и выражение генератора, но использует квадратные скобки:

[format(ord(x), 'b') for x in str_msg]

2

Как сказано выше:

str_msg = "This is a message!"
final = ' '.join(format(ord(x), 'b') for x in str_msg)
print(final.split())

вывод:

['1010100', '1101000', '1101001', '1110011', '100000', '1101001', '1110011', '100000', '1100001', '100000', '1101101', '1100101', '1110011', '1110011', '1100001', '1100111', '1100101', '100001']

список

str_msg = [format(ord(ch),'b') for ch in "this is a message"]
print(str_msg)

вывод

['1110100', '1101000', '1101001', '1110011', '100000', '1101001', '1110011', '100000', '1100001', '100000', '1101101', '1100101', '1110011', '1110011', '1100001', '1100111', '1100101']

карта

str_msg = list(map(lambda x: format(ord(x), 'b'), 'this is a message'))
print(str_msg)

вывод

['1110100', '1101000', '1101001', '1110011', '100000', '1101001', '1110011', '100000', '1100001', '100000', '1101101', '1100101', '1110011', '1110011', '1100001', '1100111', '1100101']

1

Вы просто хотите разбить строку пробелами. По вашей конечной переменной,

'1010100 1101000 1101001 1110011 100000 1101001 1110011 100000 1100001 100000 1101101 1100101 1110011 1110011 1100001 1100111 1100101 100001'

сделайте, final = final.split()и вы получите свой список

['1010100', '1101000', '1101001', '1110011', '100000', '1101001', '1110011', '100000', '1100001', '100000', '1101101', '1100101', '1110011', '1110011', '1100001', '1100111', '1100101', '100001']

0

Поэтому, хотя все ответы, которые я получил, являются vaild, я решил принять ответ @Joe Iddon, так как это ответ, который дает мне самый оптимальный код (т.е. самый короткий).

Спасибо всем, кто помог с вопросом!

питон,
Похожие вопросы
Яндекс.Метрика