Ich habe eine Liste, die ID-Nummer enthält. Einige Elemente der Liste sind eine andere Liste. Um verschachtelte Listen in eine einzelne Liste umzuwandeln, schreibe ich eine rekursive Funktion mit dem Sammlungsmodul.
Meine Codes folgen.
from collections import Iterable
def single_list(list):
for item in list:
if isinstance(item, Iterable):
yield from single_list(item)
else:
yield item
Item_list = [10,20,[30,40],[50,'Null',70],100]
items_single=single_list(Item_list)
for item in items_single:
print(item)
Wenn ich mein Programm starte, erhalte ich die folgende Fehlermeldung.
Traceback (most recent call last):
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 42, in <module>
for i in items_single:
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 36, in single_list
yield from single_list(item)
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 36, in single_list
yield from single_list(item)
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 36, in single_list
yield from single_list(item)
[Previous line repeated 986 more times]
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 35, in single_list
if isinstance(item, Iterable):
File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/abc.py", line 184, in __instancecheck__
if subclass in cls._abc_cache:
File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_weakrefset.py", line 75, in __contains__
return wr in self.data
RecursionError: maximum recursion depth exceeded in comparison
Process finished with exit code 1
Ich weiß nicht, wie ich den Fehler beheben soll.
mpu.datastructures.flatten(yourlist)
als Lösung für das Problem - Sie können sich auch die Implementierung ansehen.Antworten:
Sie erhalten den Fehler, weil der Zeichenfolgenwert in der verschachtelten Liste enthalten ist. Sie müssen auch den Zeichenfolgenwert verarbeiten.
Sie können den Fehler durch folgende Codes beheben:
quelle
Ihre Frage konzentriert sich auf das Reduzieren einer Liste. Diese Frage wurde in StackOverflow gut beantwortet, siehe Erstellen einer flachen Liste aus einer Liste von Listen in Python
Hier ist meine eigene Antwort auf diesen Thread, obwohl es möglicherweise nicht die beste Antwort ist.
Ich bin kürzlich auf eine Situation gestoßen, in der ich eine Mischung aus Zeichenfolgen und numerischen Daten in Unterlisten wie z
wo Methoden wie
flat_list = [item for sublist in test for item in sublist]
nicht funktioniert haben. Also habe ich die folgende Lösung für Unterlisten der Stufe 1+ entwickeltUnd das Ergebnis
quelle
Sie können die folgende Methode ausprobieren. nested_list = Ist Ihre Liste, die Sie konvertieren möchten.
Code:
Der obige Code ist der gleiche wie unten:
Vielen Dank!
quelle