Python: 3.8
Hallo!
Ich bin Python-Neuling und habe eine Frage zur Ausgabe mit print:
Ein netter Helfer hat mir Routinen geschrieben, mit denen ich Textdateien als Wortlisten ausgeben lassen kann.
Leider erhalte ich bei folgender Routine eine ungeeignete Liste:
# Wortliste: nach Länge und darin alphabetisch geordnet
print("-" * 30)
print ('Wortliste nach Länge der Wörter')
print()
words = sorted(words, key = lambda str: len(str))
words.sort() # sortiert: alphabetisch
def sorting_laenge(words):
words.sort(key=len) # sortiert nach Wortlänge
return words
# Driver code
print("-" * 30)
print(sorting_laenge(words))
print()
Ergebnis:
['ab', 'er', 'im', 'auf', 'das', 'der', 'die', 'hin', 'mai', 'und', 'zug', 'alte', 'auch', 'brei', 'hing', 'mann', 'euter', 'gehen', 'neben', 'nicht', 'schal', 'unter', 'viele', 'ärger', 'beugen', 'kommen', 'python', 'straße', 'wieder', 'gebäude', 'schrank', 'äußerst', 'öffnung', 'auenland', 'hauswand', 'dachstuhl', 'testdatei', 'äußerungen', 'nebensaison']
Ich brauche aber eine Liste mit nur einem Wort pro Zeile (ohne Hochkommas etc.):
ab
er
im
auf
...
Vielen Dank schon 'mal
Gruß: Benari
Py: Ausgabe mit print
Wenn Du alphabetisch und nach Länge sortieren willst, macht es keinen Sinn, erst nach der Länge, dann alphabetisch und dann nochmal nach der Länge zu sortieren. Das erste Sortieren ist überflüssig.
`sorting_laenge` ändert die übergebene Liste und gibt sie zurück. So etwas ist verwirrend. Entweder macht man das eine oder da andere.
Am besten sortiert man in einem Durchlauf:
Für die Ausgabe brauchst Du eine for-Schleife und kannst dann jedes Wort einzeln ausgeben.
`sorting_laenge` ändert die übergebene Liste und gibt sie zurück. So etwas ist verwirrend. Entweder macht man das eine oder da andere.
Am besten sortiert man in einem Durchlauf:
Code: Alles auswählen
words.sort(key=lambda s: (len(s), s))