Hallo
Brauche dringen hilfe. und zwar möchte ich aus a=['a', 'b', 'c'] in eine neue liste ['abc'] schreiben.
a=['a', 'b', 'c']
summe=0
liste=[]
liste1=[]
for i in a[0:3]:
*
*
*
print liste
danke im vorraus
Hillfee! aus a=['a', 'b', 'c'] in ['abc']
Code: Alles auswählen
a = ['a', 'b', 'c']
print [''.join(a)]
the more they change the more they stay the same
Auch wenn man die Frage recht schnell mit str.join beantworten könnte, lässt sich das Problem durchaus verallgemeinern:
Wie lässt sich eine Liste (oder Sequenz) von Sequenzen in eine flache, eindimensionale Sequenz überführen ([[a]] -> [a]). Die Antwort wäre hier m. E. itertools.chain.
Woraus ich allerdings nicht schlau werde, ist die Anforderung, als Ergebnis eine Liste mit genau einem Element (hier: Zeichenkette 'abc') zu erzeugen.
P.S.: Es hat schon jemand getan, hoffen wir mal, dass das dem Lernerfolg nicht im Wege steht
Wie lässt sich eine Liste (oder Sequenz) von Sequenzen in eine flache, eindimensionale Sequenz überführen ([[a]] -> [a]). Die Antwort wäre hier m. E. itertools.chain.
Code: Alles auswählen
>>>xs = [[1], [2, 3], [4, 5, 6]]
>>>list(chain(*xs)) == [1, 2, 3, 4, 5, 6]
True
>>> ss = ['a', 'bb', 'ccc']
>>> list(chain(*ss)) == ['a', 'b', 'b', 'c', 'c', 'c']
True
P.S.: Es hat schon jemand getan, hoffen wir mal, dass das dem Lernerfolg nicht im Wege steht
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Erst einmal Danke für die Hilfe.Dav1d hat geschrieben:Code: Alles auswählen
a = ['a', 'b', 'c'] print [''.join(a)]
Leier funktioniert das für eine Funktion bzw. Def-Funktion nicht.
Hab es bis hierhin geschafft aber leider lassen sich die ersten beoden listen nicht raus eliminieren.
Code: Alles auswählen
a=['a', 'b', 'c']
liste=[]
k=""
for i in a[0:3]:
k=k+i
liste.append([k])
print liste
[['a'], ['ab'], ['abc']]
Zuletzt geändert von Anonymous am Donnerstag 28. Januar 2016, 15:51, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Und warum nicht `chain.from_iterable()`?bwbg hat geschrieben:Wie lässt sich eine Liste (oder Sequenz) von Sequenzen in eine flache, eindimensionale Sequenz überführen ([[a]] -> [a]). Die Antwort wäre hier m. E. itertools.chain.
Übrigens denke ich schon, dass man das Zusammenführen von Strings als Spezialfall ansehen kann. Und für diesen Spezialfall existiert `str.join()`.
Warum verwendest du das`join()` jetzt nicht?Mcfly hat geschrieben:Hab es bis hierhin geschafft aber leider lassen sich die ersten beoden listen nicht raus eliminieren.
a=['a', 'b', 'c']
liste=[]
k=""
for i in a[0:3]:
k=k+i
liste.append([k])
print liste
>>>
[['a'], ['ab'], ['abc']]
Es ist seltsam, zu behaupten, dass eine Lösung nicht funktioniert, wenn man den Vorschlag überhaupt nicht anwendet...
1. Hä?
2. Code-Tags benutzen!
2. Grundlagen lernen! Wildes Rumraten bringt Dich hier nicht weiter.
@snafu: chain.from_iterable ist mir bisher noch nicht untergekommen. Mal sehen, ob ich das nächste Woche auch noch im Kopf habe. Dass str.join ein Spezialfall ist, ist mit bewusst. Wenn man es ausschließlich mit Strings zu tun hat, sollte man diesen auch verwenden.
2. Code-Tags benutzen!
2. Grundlagen lernen! Wildes Rumraten bringt Dich hier nicht weiter.
@snafu: chain.from_iterable ist mir bisher noch nicht untergekommen. Mal sehen, ob ich das nächste Woche auch noch im Kopf habe. Dass str.join ein Spezialfall ist, ist mit bewusst. Wenn man es ausschließlich mit Strings zu tun hat, sollte man diesen auch verwenden.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
snafu hat geschrieben:Warum verwendest du das`join()` jetzt nicht?Mcfly hat geschrieben:Hab es bis hierhin geschafft aber leider lassen sich die ersten beoden listen nicht raus eliminieren.
a=['a', 'b', 'c']
liste=[]
k=""
for i in a[0:3]:
k=k+i
liste.append([k])
print liste
>>>
[['a'], ['ab'], ['abc']]
Es ist seltsam, zu behaupten, dass eine Lösung nicht funktioniert, wenn man den Vorschlag überhaupt nicht anwendet...
Hi
leider kommt das hier raus:
Code: Alles auswählen
import string
a=['a', 'b', 'c']
liste=[]
k=""
for i in b[0:3]:
k=[string.join(a)]
liste.append(k)
print liste
[['a b c'], ['a b c'], ['a b c']]
Also die liste kommt dreimal raus.
hast du evtl eine idee wie ich die nur einmal auflisten kann
Zuletzt geändert von Anonymous am Donnerstag 28. Januar 2016, 16:14, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
so leicht ist das nicht: es geht um ein Auslesen eines Catia V5 Stammbaums. Es handelt sich um ein string. wenn ich eine schleife aufbaue, dann spuckt shell jeden buchstabden als string aus. dehsalb habe ich den bereich definiert, den ich gerne auslesen möchte. deshalb funktioniert dein chain.... nicht.bwbg hat geschrieben:Die Lösung wurde Die schon vorgekaut. Du musst diese nur noch abschreiben.
ich wollte erst einmal klein anfangen und versuchen die passennden string-buchstaben in sinnvolle strings umwandeln.
@Mcfly: Doch die Lösung für Dein genanntes Problem ist so einfach. Wobei das Problem von Einzelbuchstaben in einer Liste gar nicht erst existieren sollte, denn wenn eine Schleife über einen Wert Einzelbuchstaben liefert, dann ist das in der Regel eine Zeichenkette. Und die sollte man halt nicht in eine Liste mit Einzelbuchstaben zerlegen wenn man keine Einzelbuchstaben sondern eine Zeichenkette haben will. Die man am Anfang ja mal hatte. Du machst da echt ziemlich wirre Sachen. Lass das sein.
Edit: Die `join()`-Funktion aus dem `string`-Modul solltest Du übrigens nicht mehr benutzen, das wurde Dir auch anders gezeigt.
Edit: Die `join()`-Funktion aus dem `string`-Modul solltest Du übrigens nicht mehr benutzen, das wurde Dir auch anders gezeigt.
http://www.fotos-hochladen.net/view/catiajthdkyxn9o.pngBlackJack hat geschrieben:@Mcfly: Doch die Lösung für Dein genanntes Problem ist so einfach. Wobei das Problem von Einzelbuchstaben in einer Liste gar nicht erst existieren sollte, denn wenn eine Schleife über einen Wert Einzelbuchstaben liefert, dann ist das in der Regel eine Zeichenkette. Und die sollte man halt nicht in eine Liste mit Einzelbuchstaben zerlegen wenn man keine Einzelbuchstaben sondern eine Zeichenkette haben will. Die man am Anfang ja mal hatte. Du machst da echt ziemlich wirre Sachen. Lass das sein.
Edit: Die `join()`-Funktion aus dem `string`-Modul solltest Du übrigens nicht mehr benutzen, das wurde Dir auch anders gezeigt.
http://img5.fotos-hochladen.net/uploads ... x9bj16.png
Siehe Bilder damit du die Sachlage verstehst.So sieht das problem aus.
Wenn ich den Baum auslesen will, kommt ein langer String.
@Mcfly: Welcher Baum? Was ist da was? Und wo stellt sich da das Problem von Einzelbuchstaben die man zusammensetzen müsste? Ich sehe eine Liste mit Zeichenketten die anscheinend die Zeilen sind (was man übrigens echt nicht als *Bild* zeigen müsste, das ist Text den man auch einfach in den Beitrag einfügen könnte).
Letztendlich scheint das XML zu sein. Das verarbeitet man nicht mit Zeichenkettenoperationen sondern mit einem XML-Parser.
Edit: Wobei ich erst einmal prüfen würde ob das tatsächlich eine Zeichenkette ist und nicht eine Zeichenketten*darstellung* einer komplexeren Objektstruktur.
Letztendlich scheint das XML zu sein. Das verarbeitet man nicht mit Zeichenkettenoperationen sondern mit einem XML-Parser.
Edit: Wobei ich erst einmal prüfen würde ob das tatsächlich eine Zeichenkette ist und nicht eine Zeichenketten*darstellung* einer komplexeren Objektstruktur.
Da liegt offenbar XML vor. Und XML sollte man immer mit einem XML-Parser bearbeiten.
Ganz ehrlich, wenn du auf diesem Level weiterprogrammierst, dann wird das noch ein sehr beschwerlicher Weg für dich...
Ganz ehrlich, wenn du auf diesem Level weiterprogrammierst, dann wird das noch ein sehr beschwerlicher Weg für dich...
Okay
es handelt sich um ein spezifikationsbaum aus catia v5. ich habe ein bauteil konstruiert mit (Tasche,Bohrung etc.) und diesen stammbaum in python übertragen. Python ließt diesen baum buchstaben für buchstaben und gibt jeden buchstaben als zeichenkette in shell an. deshalb ist es für mich schwer diese zeichenkette in ein wort als zeichenkette und dann in eine liste zu packen. deshalb habe ich ein programm geschrieben. die schleife
"for i in range(len(tree)):
die buchstaben zwischen zwei klammern soll er mir raus schreiben ...<treeview>.das problem ist , dass er mir eine liste angibt. aber in der liste sind die buchstaben wieder in einer zeichenkette angegeben.---> ["t","r","e","e","v","i","e","w"]
versteht ihr??
jetzt war meine idee einfach diese liste wieder mit der schleife,
for i in .....
um dann diese liste mit zeichenkette in ["treeview"] zu schreiben.
leider funktioniert das mit ""join() nicht. siehe oben
es handelt sich um ein spezifikationsbaum aus catia v5. ich habe ein bauteil konstruiert mit (Tasche,Bohrung etc.) und diesen stammbaum in python übertragen. Python ließt diesen baum buchstaben für buchstaben und gibt jeden buchstaben als zeichenkette in shell an. deshalb ist es für mich schwer diese zeichenkette in ein wort als zeichenkette und dann in eine liste zu packen. deshalb habe ich ein programm geschrieben. die schleife
"for i in range(len(tree)):
die buchstaben zwischen zwei klammern soll er mir raus schreiben ...<treeview>.das problem ist , dass er mir eine liste angibt. aber in der liste sind die buchstaben wieder in einer zeichenkette angegeben.---> ["t","r","e","e","v","i","e","w"]
versteht ihr??
jetzt war meine idee einfach diese liste wieder mit der schleife,
for i in .....
um dann diese liste mit zeichenkette in ["treeview"] zu schreiben.
leider funktioniert das mit ""join() nicht. siehe oben
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Nein. Deutsch ist auch wesentlicher einfacher verständlich, wenn man auf Groß- / Kleinschreibung achtet...versteht ihr??
Und wie?und diesen stammbaum in python übertragen
Gruß, noisefloor
@Mcfly: Python liest diesen Baum nicht Zeichen für Zeichen sondern *Du*. Wenn Du den nicht Zeichen für Zeichen ausgeben willst, dann schreib halt keine Schleife die das macht, weil Du das ja gar nicht willst. Selbst für das was Du da machst, willst Du nicht in einer Schleife über die einzelnen Buchstaben gehen, sondern würdest besser die Indexwerte der Begrenzungszeichen suchen und dann mit den Werten auf den „slice“ zwischen diesen Zeichen zugreifen. Das sind Grundlagen der Zeichenkettenverarbeitung die Dir ein Python-Tutorial eigentlich vermitteln sollte.
Da das aber keine unstrukturierte Zeichenkette ist, sondern anscheinend XML, solltest Du auch gar nicht irgendetwas zwischen Klammern ausgeben wollen, sondern einen XML-Parser verwenden um das in eine Objektstruktur zu bringen mit der man dann vernünftiger, nämlich auf der Struktur der Daten, arbeiten kann.
Da das aber keine unstrukturierte Zeichenkette ist, sondern anscheinend XML, solltest Du auch gar nicht irgendetwas zwischen Klammern ausgeben wollen, sondern einen XML-Parser verwenden um das in eine Objektstruktur zu bringen mit der man dann vernünftiger, nämlich auf der Struktur der Daten, arbeiten kann.
@Mcfly: um es nochmal direkt zu sagen: Lies das Tutorial zu ElementTree, wende es auf Deine Datei an und stell wieder eine Frage, wenn Du nicht weiterkommst, ein bestimmtes Tag aus den Daten zu lesen.