Встроенная модификация списка в Python - PullRequest
0 голосов
/ 18 января 2020

Учитывая следующий список строк в Python

chars = ['a', 'b', '34', 'c', '2', 'd', '79 ']

Как вы можете изменить это на месте , без , используя любую внешнюю функцию или любой другой вспомогательный массив, так что вывод будет:

chars = ['a', 'b', '3', 4 ',' c ',' 2 ',' d ',' 7 ',' 9 ']

Это ссылка Алгоритм на месте

Ответы [ 2 ]

5 голосов
/ 18 января 2020

Редактировать: @ juanpa.arrivillaga помог улучшить его

Это должно помочь:

a[:] = list("".join(a))
# firstly it converts the list to a string
# ["1", "2", "34"] -> "1234"
# then it converts it back to a list (every char to an element in the list)
# "1234" -> ["1", "2", "3", "4"]
1 голос
/ 18 января 2020

Итак, самое простое решение на месте будет выглядеть примерно так:

chars[:] = [c for cs in chars for c in cs]

Я подозреваю, что это самое быстрое, если это беспокоит. Обратите внимание, он все еще создает вспомогательный список. Даже если вы этого не сделаете, размер базового буфера придется изменить, но это позволит избежать попадания в al oop, поэтому, по крайней мере, временная сложность линейна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...