isinstance(x, Liste) bei der Iteration einer Liste mit strings und Listen

In Durchlaufen verschachtelte Liste inside-out, mir wurde gesagt, dass "Typ-checking ist nicht Pythonic". Im Allgemeinen ist dies wahr: wir wollen nur die in der Schnittstelle (duck-typing), anstatt einen bestimmten Typ.

Die Frage fragt verschachtelte Listen der form ['a', ['c', ['e'], 'd'], 'b'], und wir insbesondere prüfen, Streicher Atomare (nicht durchsuchbar). Also, wir können nicht, verwenden Sie eine Decke collections.Iterable, aber auf der anderen Seite isinstance(x, list) scheint ein bisschen hacky.

Meine Antwort war

def traverse(l):
    for x in l:
        if isinstance(x, list):
            traverse(x)
    callback(l)

Was ist ein besserer Ansatz? Oder ist isinstance OK hier?

InformationsquelleAutor nneonneo | 2013-02-19
Schreibe einen Kommentar