@clon303: Das ist keine Frage der Eleganz sondern ob das überhaupt richtig ist. Denn das funktioniert ja nur mit Listen die genau drei Zeichenketten enthalten, und so ist die Aufgabe sicher nicht gemeint.
Der Alternativversuch gibt auch nicht 3 aus, sondern 2 (sofern die Liste mindestens 2 Elemente enthält):
Code: Alles auswählen
In [188]: listea = ['Hauptstadt' , 'Bevölkerungsgröße' , 'Fläche']
In [189]: print(len(listea[0:2]))
2
Was hast Du Dir bei dem slicing denn gedacht was das bewirkt?
Code: Alles auswählen
In [190]: listea[0:2]
Out[190]: ['Hauptstadt', 'Bevölkerungsgröße']
In [191]: len(listea[0:2])
Out[191]: 2
`len()` mit einer Liste aufgerufen ergibt immer die Länge der Liste, egal wie die Liste zustande gekommen ist.
Es gibt nicht für alles eine fertige Funktion, man muss die vorhandenen Funktionen und Syntax-Konstrukte entsprechend kombinieren, um Ergebnisse zu bekommen für die es nichts vorgefertigtes gibt. *Das* ist Programmieren. Für diese Aufgabe muss man wissen wie man die Länge einer Zeichenkette ermittelt (`len()`), wie man etwas für jedes Element einer Liste macht, ohne vorher zu wissen wie viele Elemente das sind, und dann wie man die einzelnen Teilergebnisse zu einem Gesamtergebnis zusammenfasst. Am elegantesten wäre hier die Verwendung von den eingebauten Funktionen `map()` und `sum()`:
Nicht so elegant aber akzeptabel, insbesondere bei einem Anfänger, wäre eine Schleife über die Elemente in der man das was `map()` und `sum()` machen ausprogrammiert. Und dazwischen läge `sum()` und ein Generatorausdruck oder eine „list comprehension“.
Noch eine Anmerkung zu Namen: Gute Namen sind wichtig. Das ist nicht nur Kosmetik, sondern hilft sehr beim Verständnis von Quelltext, auch demjenigen der den schreibt. Man findet Fehler leichter, auch eigene, wenn man sich Gedanken über passende Namen macht. Namen sollen dem Leser verraten was der Wert im Kontext des Programms bedeutet und weder `listea`, noch `x`, `y`, und `z` tun das.
Einbuchstabige Namen tun das in der Regel sowieso eher selten. Ausnahmen sind so etwas wie `i` und `j` für ganze Zahlen die für Indexzugriffe verwendet werden, und `x`, `y`, und `z` für Koordinaten, weil man das aus der Mathematik gewohnt ist. Aber niemand wird beim Lesen von `x`/`y`/`z` denken „Ah, ja das ist die Länge von einer Zeichenkette“.
Grunddatentypen haben nichts in Namen verloren. Den Typen ändert man gar nicht so selten mal während der Programmentwicklung und dann muss man überall im Programm die betroffenen Namen ändern, oder man hat falsche, irreführende Namen im Quelltext. Ein allgemeiner, besserer Name für `listea` wäre `texts` oder `words`, in einem konkreteren Fall vielleicht auch `headers`, falls es sich im Programm um die Kopfzeile oder Spaltenüberschriften einer Tabelle handelt.