Sortierte Ausgabe ("BLOCK LISTE")

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.
Antworten
Fabian
User
Beiträge: 5
Registriert: Dienstag 16. August 2005, 09:46

Dienstag 16. August 2005, 09:55

Zuerst ein "HALLO" an alle hier ;-).. Ich hab direkt eine Frage! :roll:

Code: Alles auswählen

>>> print configs
['CONFIG1.cfg', 'CONFIG2.cfg', 'CONFIG3.cfg', 'CONFIG4.cfg', 'CONFIG5.cfg', 'CONFIG6.cfg', 'CONFIG7.cfg', 'CONFIG8.cfg', 'CONFIG9.cfg']
>>> for i in range(len(configs)):
... 	print i, configs[i]
... 	
0 CONFIG1.cfg
1 CONFIG2.cfg
2 CONFIG3.cfg
3 CONFIG4.cfg
4 CONFIG5.cfg
5 CONFIG6.cfg
6 CONFIG7.cfg
7 CONFIG8.cfg
8 CONFIG9.cfg
Das klappt ja schon ohne Probleme. Doch was mir nun ein Rätsel ist, wie geb ich diese Liste folgendermaßen aus?

0 CONFIG1.cfg 1 CONFIG2.cfg 2 CONFIG3.cfg 3 CONFIG4.cfg
4 CONFIG5.cfg 5 CONFIG6.cfg 6 CONFIG7.cfg 7 CONFIG8.cfg
8 CONFIG9.cfg

Ich hab einfach weiß einfach nicht, wie ich immer vier ein eine Reihe ausgebe.

Bitte um hilfe.

Danke! :)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 16. August 2005, 10:12

Hoi Fabian,

Ist das was Du suchts?

Code: Alles auswählen

import sys

configs = ['CONFIG1.cfg', 'CONFIG2.cfg', 'CONFIG3.cfg', 'CONFIG4.cfg', 'CONFIG5.cfg', 'CONFIG6.cfg', 'CONFIG7.cfg', 'CONFIG8.cfg', 'CONFIG9.cfg']
 
for i in range(len(configs)):
	if (i % 4) or (i == 0):
		sys.stdout.write("%d %s " % (i, configs[i]))
	else:
		sys.stdout.write("\n%d %s " % (i, configs[i]))
print
Das geht womöglich noch einfacher, aber Du solltest erst einmal dies verstehen. Bei Verständnisproblemen, kannst Du ja nochmal nachfragen.

Gruß,
Christian
Fabian
User
Beiträge: 5
Registriert: Dienstag 16. August 2005, 09:46

Dienstag 16. August 2005, 10:25

Genau das ist es! Danke!

Das einzige was ich nicht verstehe, wieso machst du das mit sys.stdout.write - und nicht mit print?
[/code]
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Dienstag 16. August 2005, 10:38

Hi!

Andere Version:

Code: Alles auswählen

>>> configs = ['CONFIG1.cfg', 'CONFIG2.cfg', 'CONFIG3.cfg', 'CONFIG4.cfg', 'CONFIG5.cfg', 'CONFIG6.cfg', 'CONFIG7.cfg', 'CONFIG8.cfg', 'CONFIG9.cfg'] >>> for i,c in enumerate(configs):
...     if i and i%4==0: print
...     print "%i %s" % (i,c),
...
0 CONFIG1.cfg 1 CONFIG2.cfg 2 CONFIG3.cfg 3 CONFIG4.cfg
4 CONFIG5.cfg 5 CONFIG6.cfg 6 CONFIG7.cfg 7 CONFIG8.cfg
8 CONFIG9.cfg
Gruß, mawe
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 16. August 2005, 10:41

Fabian hat geschrieben: Das einzige was ich nicht verstehe, wieso machst du das mit sys.stdout.write - und nicht mit print?
Macht der Gewohnheit*. Nimm mawes Version, korrigiere die Formatierung und viel Spaß! Achte aber auf das zusätzliche Komma in mawes Code - dieses unterdrückt den Zeilenumbruch.

Gruß,
Christian

* Und weil sys.stdout ein bißchen mehr bietet, aber das ist hier nicht von Belang.
Fabian
User
Beiträge: 5
Registriert: Dienstag 16. August 2005, 09:46

Dienstag 16. August 2005, 10:49

CM hat geschrieben:Achte aber auf das zusätzliche Komma in mawes Code - dieses unterdrückt den Zeilenumbruch.
Wieder was gelernt, so langsam mag ich Python ;-).

Danke mawe & cm!
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 16. August 2005, 11:43

Der Unterschied zwischen dem print mit Komma und dem sys.stdout.write() ist allerdings, das beim print noch ein Leerzeichen eingefügt wird!

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten