Seite 1 von 1

Anfänger Frage

Verfasst: Mittwoch 29. September 2010, 10:30
von USER67
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

Re: Anfänger Frage

Verfasst: Mittwoch 29. September 2010, 10:42
von EyDu
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

Re: Anfänger Frage

Verfasst: Mittwoch 29. September 2010, 10:43
von Leonidas
Wie kannst du ein "Hello World" einfach ändern wie in einer Liste? Eben das geht nicht, weil du das Objekt nicht verändern kannst.

Re: Anfänger Frage

Verfasst: Mittwoch 29. September 2010, 10:44
von 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.

Re: Anfänger Frage

Verfasst: Mittwoch 29. September 2010, 10:49
von USER67
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

Re: Anfänger Frage

Verfasst: Mittwoch 29. September 2010, 12:06
von 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.