Есть ли способ сделать это с помощью понимания списка?Python

Программы на Python
Anonymous
Есть ли способ сделать это с помощью понимания списка?

Сообщение Anonymous »

У меня есть список, который выглядит примерно так:

Код: Выделить всё

data = ['1', '12', '123']
Я хочу создать новый список, который выглядит следующим образом:

Код: Выделить всё

result = ['$1', '1', '$2', '12', '$3', '123']
где число после знака $ — это длина следующего элемента.
Простой способ сделать это — использовать цикл for:

Код: Выделить всё

result = []
for element in data:
result += [f'${len(element)}'] + [element]
но мне было интересно, можно ли сделать это более элегантным способом - возможно, с помощью понимания списка?
Я мог бы это сделать
p>

Код: Выделить всё

result = [[f'${len(e)}', e] for e in data]
но в результате получается список списков:

Код: Выделить всё

[['$1', '1'], ['$2', '12'], ['$3', '123']]
Я мог бы сгладить это с помощью чего-то вроде

Код: Выделить всё

result = sum([[f'${len(e)}', e] for e in data], [])
или даже

Код: Выделить всё

result = [x for xs in [[f'${len(e)}', e] for e in data] for x in xs]
но читать это становится довольно сложно. Есть ли лучший способ сделать это?


Подробнее здесь: https://stackoverflow.com/questions/788 ... prehension

Вернуться в «Python»