Anfänger Frage

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
USER67
User
Beiträge: 14
Registriert: Mittwoch 22. September 2010, 10:58

Hallo alle,

eine Frage:

Wieso wird hier gesagt, dass Strings bzw tuples unveränderbar sind?

http://www.rg16.asn-wien.ac.at/~python/ ... /kap09.htm

Ich meine ein "Hello World" kann ich genauso ändern wie ein Hello World in einer Liste ---> ["H","e","l"...]

Kann mich vielleicht jemand aufklären.

Mfg
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Mal zum nachdenken:

Code: Alles auswählen

>>> spam = "spam"
>>> eggs = spam
>>> spam = "foo"
>>> spam
'foo'
>>> eggs
'spam'
>>> 
>>> baz = [1,2,3]
>>> bar = baz
>>> baz.append(4)
>>> baz
[1, 2, 3, 4]
>>> bar
[1, 2, 3, 4]
Du muss zwischen "etwas an einen Namen binden" und "verändern" unterscheiden.

Sebastian
Das Leben ist wie ein Tennisball.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wie kannst du ein "Hello World" einfach ändern wie in einer Liste? Eben das geht nicht, weil du das Objekt nicht verändern kannst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@USER67: Du kannst Zeichenketten und Tupel nicht verändern, insbesondere nicht wie eine Liste mit Zeichenketten:

Code: Alles auswählen

In [11]: a = 'Hello World'

In [12]: a[1] = 'x'
---------------------------------------------------------------------------
<type 'exceptions.TypeError'>             Traceback (most recent call last)

/home/bj/<ipython console> in <module>()

<type 'exceptions.TypeError'>: 'str' object does not support item assignment

In [13]: a = (1, 2, 3)

In [14]: a[0] = 42
---------------------------------------------------------------------------
<type 'exceptions.TypeError'>             Traceback (most recent call last)

/home/bj/<ipython console> in <module>()

<type 'exceptions.TypeError'>: 'tuple' object does not support item assignment
Das wird dort also gesagt weil es den Tatsachen entspricht.
USER67
User
Beiträge: 14
Registriert: Mittwoch 22. September 2010, 10:58

achso ist das gemeint. ich dachte man meint damit dass operationen an einem string nicht möglich sind, wie z.b.
mit replace() etc.

dann hab ich es verstanden.
weiter gehts........... :mrgreen:
Mfg
lunar

@USER67: Nun ja, streng genommen sind auf einer Zeichenkette auch keine Operationen möglich. ".replace()" verändert so wie alle Methoden für Zeichenketten ja nicht die Zeichenkette selbst, sondern gibt eine neue Zeichenkette mit den entsprechenden Veränderungen zurück.
Antworten