#python
#python
Вопрос:
Например, convert_to_list('[4,5,[6,7],[8,[9,10]],11]')
возвращает фактический список [4, 5, [6, 7], [8, [9, 10]], 11]
Эта проблема беспокоила меня в течение нескольких дней. Единственная проблема заключается в том, что я не могу использовать eval()
или exec()
функционировать.
редактировать: вам не разрешается импортировать какие-либо нестандартные библиотеки Python или использовать встроенные в Python функции eval() и exec() . Вам не разрешено использовать файлы. ( Это инструкция из моего курса python)
Комментарии:
1. Используйте
ast.literal_eval()
.2. вам нужен стек (список с использованием
append
иpop
), начинайте новый список каждый раз, когда вы видите[
и заканчиваете этот список и возвращаетесь к предыдущему списку в стеке, когда видите]
. Очевидно, что это проблема домашнего задания, и вы не выполнили минимум даже того, что вы пробовали и почему это не сработало. Вы в основном сказали «решите мою проблему для меня», и это не то, для чего предназначен stackoverflow.3. Привет, извините, это моя первая публикация в stack overflow, поэтому я не знал об этике здесь. Мой друг направил меня сюда. Чтобы ответить вам, я пробовал этот метод, но я застрял в списке внутри списка. Я мог бы поместить целые числа в список, но мне трудно поместить список в другой список, а затем поместить его в больший список.
4. @Barebear Если бы вы опубликовали свой код, вы бы получили больше сочувствия. Вы могли бы опубликовать другой вопрос, в который вы включаете написанный вами код и какую часть вы путаете или испытываете трудности, и это может дать лучшие ответы
Ответ №1:
Вы можете использовать модуль json
list1='[4,5,[6,7],[8,[9,10]],11]'
import json
json.loads(list1)
вывод:
[4, 5, [6, 7], [8, [9, 10]], 11]
Комментарии:
1. Привет, ваш метод, безусловно, может работать, однако я забыл упомянуть, что мы не можем импортировать библиотеки Python. (извините, этот вопрос из моего курса uni python)
2. Я обновлю, если получу ответ без использования какого-либо импорта.
3. Вы узнаете больше, если попытаетесь сделать это самостоятельно. Вам нужно написать лексер, который разбивает входные данные на токены «[«, «]», «,», и <число>, и вам нужно будет написать синтаксический анализатор, который понимает, как токены сочетаются друг с другом.