Lange Rede kurzer Sinn, ich versuche, mit einigen verrückten Daten zu arbeiten, die ich gestern gesammelt habe. Eine schnelle geschachtelte for-Schleife würde das sehr einfach machen, aber gerade jetzt möchte ich nur das Verständnis meiner verschachtelten Listen nutzen. Es gibt eine Menge Post zu diesem Thema und ich bin mir nicht sicher, ob es nur ich oder der Freitagabend ist, ich kann es nicht zur Arbeit bringen. Meine Liste comphrension ist im Format:Verschachtelte Liste Verständnis mit Split() in Python
[ [str(j[0], sanitize(j[1]) for j in i.split(',')] for i in b]
wo b ['string, float\t\n', 'string, float\t\n']
ist oder b könnte ein Dateiobjekt oder was auch immer sein, egal, ein Heck viel.
konnte ich einfach etwas tun, wie
for i in b:
out.append(str(j[0]), sanitize(j[1])
Aber sollte es möglich sein, durch Liste Verständnis. ES SOLLTE!!! Und irgendwie verstehe ich es nicht richtig.
nun auf dem, was ich bisher getan haben ...
>>> b
['08:54:55, 0.031250\n', '08:55:57, 0.031250\n']
>>> [i.split(',') for i in b]
[['08:54:55', ' 0.031250\n'], ['08:55:57', ' 0.031250\n']]
Was ich will:
[['08:54:55', 0.031250], ['08:55:57', 0.031250]]
Eine multiple Liste Verständnis der Trick tun sollten:
So etwas wie :
[ [j[0], j[1]] for j in i.split(',') for i in b] # the cleaning/str/float would be something like: str(j[0]), float(j[1])
ABER, das ist was ich bekomme.
>>> [ [j[0], j[1]] for j in i.split(',') for i in b]
[['0', '8'], ['0', '8'], [' ', '0'], [' ', '0']]
>>>
>>> [ [j[1]] for j in i.split(',') for i in b]
[['8'], ['8'], ['0'], ['0']]
Jeder Versuch, an j [0] oder j [1] zu arbeiten, wird nicht ausgeführt.
, um herauszufinden, was los war, ich dies tat:
>>> [ [ pprint(type(j)) for j in i.split(',')] for i in b]
<type 'str'>
<type 'str'>
<type 'str'>
<type 'str'>
[[None, None], [None, None]]
Wenn ich mit j[0]
oder j[1]
, verwirren nicht tun
>>> [ [ j for j in i.split(',')] for i in b]
[['08:54:55', ' 0.031250\n'], ['08:55:57', ' 0.031250\n']]
Das Beispiel mit pprint(type(j))
bedeutet auch, wenn ich Um eine externe Funktion zu schreiben, würde es nicht ausreichen. Ich würde einfach eine leere Liste aus dem Listenverständnis zurückholen.
Was mache ich falsch? Ein Lambda könnte den Trick machen?
Das funktioniert großartig. Wrapping i.split (',') in [] scheint den Job zu erledigen. –