konvertieren Liste von Listen in einen string
Ich habe eine Liste in die andere Liste und ich möchte doc.write(a)
a = [[1, 2, "hello"],
[3, 5, "hi There"],
[5,7,"I don't know"]]
doc.write(''.join(a))
TypeError: sequence item 0: expected str instance, list found
Wie kann ich damit umgehen, habe ich an eine for-Schleife, in der ich beitreten und fügen Sie alle Teillisten?
Das eigentliche Ziel war, um es irgendwie lesbar für Menschen, aber ich wollte nicht eine fertige Lösung von Euch.
- Was willst du mit den zahlen?
- Bitte zeigen Sie die aktuelle Ausgabe, die Sie wollen.
- Ich möchte schreiben Sie die Liste in eine Textdatei. Irgendwie.
- Und Sie kümmern sich nicht wie bei allem? Es muss nicht neu sein, parse-fähige von Ihren code, lesbar oder durch einen Menschen, oder importierbar in einem anderen Programm, oder was? In diesem Fall, nur tun
write('stuff')
und du bist fertig. - Was ist "Zeug"??
- Es ist eine perfekt gültige Zeichenfolge, die verwendet werden können zum repräsentieren jedes Objekt, wenn Sie haben absolut keine Anforderungen an das Objekt der Darstellung.
- Was ist Ihr Ziel beim schreiben eines Objekts als string in einer text-Datei ? Ist es nur, um es lesbar ? Oder wird youhave, es wieder zu bekommen und verwenden Sie es als eine Python ? Nach dem, was die Antwort ist, die Lösung auf Ihre Frage wird anders sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, so etwas wie
d.h.
'\t'.join()
diese kann verschönert werden, um eine tab-getrennte Liste, die sich mehr lesbar.Gibt es verschiedene rechtliche Dinge, die Sie tun können, und keine Möglichkeit für jedermann zu sagen, welche ist die richtige, ohne zu wissen, was Sie wollen.
Ersten, Sie können schreiben Sie einfach den
str
oderrepr
vona
:Beachten Sie, dass dies ist, was
print
hat (es gibt diestr
von was auch immer Sie geben es—wenn auch mit einer Liste, diestr
ist identisch mit derrepr
; Sie sind beide effektiv'[' + ', '.join(map(repr, self)) + ']'
).Zweitens könnte Sie ein format verwenden, das speziell für Daten persistent, wie JSON:
Dritte, können Sie gemeinsam die repr jedes element von
a
in irgendeiner Weise von Ihrer Wahl, das ist trivial mit einemmap
oder ein Verständnis. Zum Beispiel:... oder ...
Oder Sie können die gleiche Sache zu tun rekursiv.
Oder Sie können glätten der Liste (z.B., glätten Sie es, einen Schritt mit
itertools.chain
oder rekursiv mit den Rezepten aus deritertools
docs oder mit dermore-itertools
Paket) und dann stringify die Stücke, aber Sie wollen und dann kommen Sie bis.Oder Sie können einfach schreiben Sie das Wort
LIST
.Alle diese sind vollkommen gültig zustande zu
write
.Liste Verständnis wäre die beste Wahl:
Es ist die am meisten empfohlene Ansatz in einer ähnliche Frage ALSO, in Anbetracht der Leistung und syntax.
War ich auf der Suche nach einer Antwort auf diese als gut. Nach dem Lesen der Kommentare hier, das ist, was ich kam mit:
War ich auf der Suche nach einer Antwort auf diese als gut. Nach dem Lesen der Kommentare hier, das ist, was ich kam mit:
Das schafft so etwas wie:
Wenn Sie möchten, dass alle Leerzeichen als Trennzeichen, dann verwenden Sie '' anstelle von ',' auf der Vorderseite.
Was über die Verwendung von itertools?
Alternativ:
Schlug Sie ein mit einem
for
Schleife. Sie könnte in der Tat tun dies, obwohl Sie die oben genannten Optionen sind wahrscheinlich besser.Dies ist im Grunde die Vorherige option, aber abgerollt.
Es sei denn du möchtest nur schreiben Sie die erste Liste, in welchem Fall Sie dies tun könnte:
Es ist schwierig für mich, um sicher zu sein, denn Ihre Frage ist zu kurz, aber es scheint mir, dass Sie in einem XY-problem, das heißt :
Sie stellen eine Frage über ein Y-problem, dass Sie denken, das ist derjenige, der gelöst werden muss, geht aus einer bergauf-X problem. Aber dein wirkliches problem ist, dass Sie denken, dass die Y problem ist die Antwort auf das Reale problem X, UND dass Sie präsentieren hier nur die Y-problem.
Zu schreiben, dass ich nur umschreiben, was hier gesagt: XY-problem
Wenn ich Recht habe, meine Meinung ist, dass Sie einen besseren Weg zur Lösung Ihrer echten X-problem mit einem der folgenden tools, die es ermöglichen, ein Objekt serialisieren und zu erfassen, die serialisiertes Objekt in eine Datei:
Gurke
Marschall
Regal
Ich nicht paraphrasieren und wiederholen Sie alle die docs auf diese Werkzeuge, Sie Lesen.
.
Wenn ich falsch bin, und dass du wirklich nur schreiben wollen, ein Objekt in form einer Zeichenkette, können Sie auch tun:
What, specifically, is the question asking for? Make sure your answer provides that – or a viable alternative. The answer can be “don’t do that”, but it should also include “try this instead”. Any answer that gets the asker going in the right direction is helpful, but do try to mention any limitations, assumptions or simplifications in your answer. Brevity is acceptable, but fuller explanations are better
Es erscheint mir, dass es genau rechtfertigt meine Art von Antwort''.join(a)
für eine flatten-version vona
aus dem code, die Sie ursprünglich gebucht. Diese Antwort steht in keinem Zusammenhang zu, dass überhaupt, es behandelt ein anderes problem vollständig, so dass ich denke, es wäre zumindest hilfreich zu erwähnen, was Sie glaubst der OP, das problem ist auch, anstatt nur zu verwirren.Können Sie auch nur eine einfache Liste Verständnis, wie diese: