3 Listen Elemente zusammenfassen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

3 Listen Elemente zusammenfassen

Beitragvon nemomuk » Samstag 23. Februar 2008, 18:56

Hallo,

ich wollte mal fragen, wie man unumständlich 3 Listenelemente zusammenfassen kann?

Code: Alles auswählen

['1', '0', '5', '1', '1', '0', '1', '1', '6', '1', '0', '1', '1', '0', '3', '1', '1', '4', '1', '0', '5', '1', '1', '6', '1', '2', '1']


In diesem Fall immer drei Zahlen zu einer zusammenbauen.

Vielen Dank!
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Samstag 23. Februar 2008, 19:03

Code: Alles auswählen

>>> l = ['1', '0', '5', '1', '1', '0', '1', '1', '6', '1', '0', '1', '1', '0', '3', '1', '1', '4', '1', '0', '5', '1', '1', '6', '1', '2', '1']
>>> zip(l[0::3], l[1::3], l[2::3])
[('1', '0', '5'), ('1', '1', '0'), ('1', '1', '6'), ('1', '0', '1'), ('1', '0', '3'), ('1', '1', '4'), ('1', '0', '5'), ('1', '1', '6'), ('1', '2', '1')]
>>>


Meinst du das?
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Beitragvon nemomuk » Samstag 23. Februar 2008, 19:08

nein, zum Schluss sollte sowas rauskommen:

("105","123"...)

Vielen Dank!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 23. Februar 2008, 19:22

EyDus Lösung weiterführen:

Code: Alles auswählen

[''.join(nums) for nums in zip(l[0::3], l[1::3], l[2::3])]

Wenn du so etwas wie EyDu brauchst nur in Längenunabhängig - sowas habe ich mal unter dem Namen chunkize hier im Forum gepostet.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Beitragvon nemomuk » Samstag 23. Februar 2008, 20:06

Vielen Dank!!!

mir ist das in einer Zeile immer zu komprimiert...

Ist so eine Schreibweise auch ok?

Code: Alles auswählen

for x in zip(stri[0::3], stri[1::3], stri[2::3]):
   result.append("".join(x))


Oder bringt das in irgendeiner Weise Probleme mit sich?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 23. Februar 2008, 21:01

Das wären eigentlich drei Zeilen:

Code: Alles auswählen

result = []
for x in zip(stri[0::3], stri[1::3], stri[2::3]):
    result.append("".join(x))


Ich finde es in drei Zeilen nicht einfacher sondern umständlicher, weil du einen Task in drei Zeilen aufteilst und man erst überlegen muss, was der Autor (du) da eigentlich im Sinn hatte.

Sinnvoller ist das so rum:

Code: Alles auswählen

grouped = zip(stri[0::3], stri[1::3], stri[2::3])
result = [''.join(nums) for nums in grouped]

Weil man da nach der ersten Zeile ein ``print grouped`` reinsetzen kann um zu gucken, was das macht. Die zweite zeile ist Selbterklärend wenn man weiß, das LCs über Listen iterieren und neue Listen generieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Beitragvon nemomuk » Sonntag 24. Februar 2008, 02:25

Danke, sowas bringt mich weiter...!!!

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]