in 3.3+ eine rekursive Idiom ist, die modifiziert werden können verschachtelt Tupel ‚beliebig‘ Tiefe abzuflachen (siehe: System Rekursion Grenze)
def yielder(x):
for y in x:
if isinstance(y, tuple):
yield from yielder(y)
else:
yield y
, die dann in einer Liste verwendet werden können,
Verständnis
[[*yielder(e)] for e in IP]
Out[48]: [['1', '2355', '5', 'F'], ['1', '2300', '4', 'M'], ['1', '2400', '5', 'F']]
fand ich die oben bei der Suche nach 'python abflachen', in den Kommentaren zu https://jugad2.blogspot.in/2014/10/flattening-arbitrarily-nested-list-in.html
für 2/7 http://joedicastro.com/aplanar-listas-en-python.html Rezepte hat, ich modded:
def flat_slice (lst):
lst = list (lst)
for i , _ in enumerate (lst):
while (hasattr (lst [ i ], "__iter__") and not isinstance (lst [ i ], basestring)):
lst [ i : i + 1 ] = lst [ i ]
return lst
(ich hatte basestring zu ändern für 3+ auf str)
und es lief mit dem gleichen Ergebnis
[[*flat_slice(e)] for e in IP]
Out[66]: [['1', '2355', '5', 'F'], ['1', '2300', '4', 'M'], ['1', '2400', '5', 'F']]
Gibt es einen anderen Weg? Ich benutze Python 2.7 und kann nicht upgraden. – rAmAnA
Sie sollten die Version in die Tags einfügen, wenn ti wichtig ist. Denn sonst ist das eine sehr glatte Antwort. – RobertB