Code: Alles auswählen
def get_all_items(oldlist, items = []):
newlist = []
for i in oldlist:
if type(i) == list and len(i) > 0:
for j in i:
newlist.append(j)
else:
items.append(i)
if len(newlist) > 0:
return get_all_items(newlist, items)
else:
return items
Code: Alles auswählen
>>> print get_all_items([1, 2, [3, 4, [5, 6, []], 7], 8, 9])
>>> [1, 2, 8, 9, 3, 4, 7, 5, 6, []]
Code: Alles auswählen
def get_all_items(olditer, items = []):
newiter = []
for i in olditer:
if hasattr(i, '__iter__'):
for j in i:
newiter.append(j)
else:
items.append(i)
if len(newiter) > 0:
return get_all_items(newiter, items)
else:
return items
>>> print get_all_items([1, 2, [3, 4, [5, 6, [], (x for x in range(9))], 7], 8, 9])
>>> [1, 2, 8, 9, 3, 4, 7, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8]
Code: Alles auswählen
items.append(i)
AttributeError: 'tuple' object has no attribute 'append'
Natürlich ist auch abgesehen von der Lösung meines Problems wie immer auch Kritik an anderen Punkten erwünscht.
Das ist übrigens nur Spielerei, ich brauche so eine Funktion eigentlich nicht (sonst würde ich die wahrscheinlich zur Sicherheit auch eher iterativ schreiben)