Ссылка на оригинальный вопрос: Вложенный список и число ()
Я проверял принятый код ответа и обнаружил, что он не работает для списка, содержащего строки.
Код принятого ответа:
def flatten(seq,container=None):
if container is None:
container = []
for s in seq:
if hasattr(s,'__iter__'):
flatten(s,container)
else:
container.append(s)
return container
c = flatten([(1,2),(3,4),(5,[6,7,['a','b']]),['c','d',('e',['f','g','h'])]])
print c
print c.count('g')
d = flatten([[[1,(1,),((1,(1,))), [1,[1,[1,[1]]]], 1, [1, [1, (1,)]]]]])
print d
print d.count(1)
Сначала я проверил, используя этот ввод:
list1 = [[[1,2,3,4,5],[1,2,3,4,5]],[[1,2,3,4,5],[1,2,3,4,5]],[[1,2,3,4,5],[1,2,3,4,5]]]
И это сработало.
Но как только я воспользуюсь этим:
list1 = [[[1,'2',3,4,5],[1,2,3,4,5]],[[1,2,3,4,5],[1,2,3,4,5]],[[1,2,3,4,5],[1,2,3,4,5]]]
Примечание: первые 2 теперь являются строками.
Выдает эту ошибку:
RecursionError: maximum recursion depth exceeded
Я понимаю рекурсию, но не понимаю, почемуошибка случается.Изначально я думал, что это как-то связано с ' __ iter __ ', но я уверен, что строки итеративны, потому что я проверил.
Для справки, я использую Python 3.6.4.
И я все еще новичок в Python, пожалуйста, будьте добры ко мне:)