Я искал и нашел вопрос с таким же заголовком также (hereherehereherehere), но я не прошу этого. Я столкнулся с проблемой:Свести нерегулярный список списков в Python рекурсивно
Чтобы написать функцию, чтобы сгладить список. Список содержит другие списки, строки или ints.
И мой код то же
t=[]
def flatten(aList):
for i in aList:
if type(i) !=list:
t.append(i)
else:
flatten(i)
return t
Но когда я проверить код тестов:
flatten([[1], [1]])
: Средство проверки говорит мне, выход есть[1, 1, 1, 1]
но в codeskulptor я получаю правильный выход, который равен[1, 1]
.flatten([[[1]], [[[5]]]])
: Контроллер сообщает, что выход[1, 1, 1, 1, 1, 2, 3, 3, 2, 1, 0, 4, 5, 6, 7, 1, 5]
, но в кодексах говорит[1, 5]
.
Эта проблема существует со многими тестовыми случаями. Затем я проверил свой код в репетиторе python и узнал, что после выполнения оператора if каждый раз, когда возвращается список t
и, наконец, когда функция останавливается, возвращается последний отредактированный список t
.
Как решить эту проблему, пожалуйста, помогите мне с этим и да, я новичок в python и ничего не знаю об itertools, использовании лямбда-функции, генераторах и т. Д., Поэтому, пожалуйста, расскажите мне в контексте, в котором я могу понять.
Вторая ссылка, которую вы приводите, является рабочим примером этой функции. –
@Morgan Thrapp этот код также не решает мою настоящую проблему –
Просто для стилизации кода: вы должны использовать ['isinstance()'] (https://docs.python.org/3/library/functions.html#isinstance) вместо использования 'type () == type ()'. – albert