klammergesöks

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
Julius.Peag
User
Beiträge: 5
Registriert: Montag 15. Mai 2017, 10:53

Hallo Freunde

Frage: wenn ich einen String in einer Liste speichere, und diesen z.B mit der len Funktion ändern wollen würde, dann währe meine Überlegung ungefähr so:

liste=["listeninhalt"]
#listeninhalt verwenden
print liste[len(0)-1]



natürlich funktioniert das nicht... :roll:
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Julius.Peag hat geschrieben:Hallo Freunde

Frage: wenn ich einen String in einer Liste speichere, und diesen z.B mit der len Funktion ändern wollen würde, dann währe meine Überlegung ungefähr so:

liste=["listeninhalt"]
#listeninhalt verwenden
print liste[len(0)-1]

natürlich funktioniert das nicht... :roll:
Also das ist unverständlich, mit len bekommt man eine Länge und ändert nichts. Und was ist die Länge der Zahl 0? Die gibt es nicht. Wenn Du allerdings statt 0 liste gemeint haben könntest und das letzte Element ausgeben willst, dann genügt auch 'print liste[-1]'.

Desweiteren, wozu schreibst Du den String in eine Liste? Und wenn Du darin etwas ändern willst, dann geht das nicht. Man setzt dann einen veränderten String zusammen. Du kannst natürlich einen String als Liste expandieren und am Ende wieder einen String daraus machen. Am Besten schreibst Du, was genau Du vorhast!
Julius.Peag
User
Beiträge: 5
Registriert: Montag 15. Mai 2017, 10:53

sorry hast Recht also: Ich möchte sozusagen auf den string innerhalb der Liste mit hilfe von der len Funktion zugreifen, weiss aber nicht, wei ich die Klammern setzen soll.
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Julius.Peag hat geschrieben:sorry hast Recht also: Ich möchte sozusagen auf den string innerhalb der Liste mit hilfe von der len Funktion zugreifen, weiss aber nicht, wei ich die Klammern setzen soll.
Dieses klingt eher merkwürdig. Warum möchtest du das machen, was hast du genau vor?
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Julius.Peag hat geschrieben:sorry hast Recht also: Ich möchte sozusagen auf den string innerhalb der Liste mit hilfe von der len Funktion zugreifen, weiss aber nicht, wei ich die Klammern setzen soll.
Du meinst vielleicht, dass Du mit Hilfe eines Index darauf zugreifen willst. len kannst Du verwenden, um die Länge abzufragen , damit Du beim Ende auch aufhörst.

Du kannst mit einem Index jederzeit lesend zugreifen, als ob er eine Liste wäre. Verändern kannst Du darin aber nichts, genauso wie bei einem Tupel.

Hier siehst Du dass man mit einem Index darauf lesend zugreifen kann:

Code: Alles auswählen

mein_string = "listeninhalt"

for index in range(len(mein_string)):
    print(mein_string[index])
Julius.Peag
User
Beiträge: 5
Registriert: Montag 15. Mai 2017, 10:53

String="DASISTEINSTRING"
letzter_Buchstabe=String[len(String)-1]
letzter_Búchstabe2=String[-1]


Frage: wie schaffe ich das, wenn sich der String in einer Liste befindet
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Julius.Peag hat geschrieben:Frage: wie schaffe ich das, wenn sich der String in einer Liste befindet
Dann musst Du doppelt indizideren, den Listeneintrag und den Buchstaben im String. Der letzte Buchstabe hat den Index: -1

Code: Alles auswählen

liste = ["String1","String2","String3"]

for index_liste in range(len(liste)):
    print(liste[index_liste][-1])
Je nachdem, was Du vorhast, brauchst Du auch den index der Liste nicht, etwa in einer Schleife:

Code: Alles auswählen

liste = ["String1","String2","String3"]

for eintrag in liste:
    print(eintrag[-1])
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@Julius.Peag: Du mußt Dich mit den Python-Datenstrukturen vertraut machen. Eine Liste ist eine Sequenz und ein String ist ebenfalls eine Sequenz. Über Sequenzen kann iteriert werden und die Elemente sind auch per Index zugänglich. Wenn Du einen String in einer Liste hast, dann hast Du zwei geschachtelte Sequenzen.

Code: Alles auswählen

>>> liste = ["listeninhalt"]
>>> liste[0]
'listeninhalt'
>>> liste[0][0]
'l'
>>> liste[0][-1]
't'
Einen String kannst Du nicht ändern, der ist imutabel. Wohl aber die Liste, die ein mutabler Datentyp ist. 'len' hingegen ist eine Funktion, die eine Sequenz (bzw. ein Objekt, das sich so verhält) als Argument erwartet und Anzahl der in der Sequenz enthaltenen Objekte zurückliefert.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Wer range(len(.. verwendet sollte gleich mehrfach eins mit dem dicken Telefonbuch übergezogen bekommen. Dafür gibts enumerate.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten