Änderungen von Listen in Python (Änderungen von Listen in Python), Lektion, Seite 723996
https://www.purl.org/stefan_ram/pub/aenderungen_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Änderungen von Listen in Python 

Eine Liste kann verändert  werden, etwa durch eine Zuweisung an eine Bindungsstelle  der Liste.

Konsolenprotokoll

l =[ 0, 1, 2 ]

l

[0, 1, 2]

l[ 0 ]= 77

l

[77, 1, 2]

Sogar Zuweisungen an Auswahlen von Bindungstellen sind möglich!

Konsolenprotokoll

l =[ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]

l[ 2: 7 ]=[ 30, 31 ]

l

[20, 21, 30, 31, 27, 28, 29]

Das kann auch zum Anhängen benutzt werden.

Konsolenprotokoll

l =[ 0, 1, 2 ]

l[ 3: 4 ]= 'a'

l

[0, 1, 2, 'a']

l[ 4: 5 ]=[ 'x', 'y', 'z' ]

l

[0, 1, 2, 'a', 'x', 'y', 'z']

Die Verwendung von Auswahlen ist ein weites Feld, das hier nicht zu sehr vertieft werden soll. Wir zeigen aber noch eine Technik, die es erlaubt, einer Liste einen vollständig neuen Wert zu geben, ohne ihre Identität zu verändern.

Konsolenprotokoll

l =[ 1, 2, 3, 4, 5 ]

o = id( l )

l[ : ]=[ "a", "b", "c" ]

print( o == id( l ))

True

Das Löschen  einer Bindungsstelle erfolgt mit der Löschanweisung.

Konsolenprotokoll

l =[ 20, 21, 22, 23, 24, 25 ]

del l[ 1 ]

[20, 22, 23, 24, 25]

Unveränderliche Objekte

Viele Arten von Objekte in Python  sind aus gutem Grund unveränderlich. Dazu gehören Tupel  und Zeichenfolgen.

Konsolenprotokoll

t = 1, 2, 3

t

(1, 2, 3)
t[ 0 ]
1
t[ 0 ]= 5
TypeError: 'tuple' object does not support item assignment
Konsolenprotokoll

s = "abc"

s

'abc'
s[ 0 ]
'a'
s[ 0 ]= 'x'
TypeError: 'str' object does not support item assignment

Veränderungen von Listen können mit Tupeln durch Bindung an ein neues Tupel imitiert werden.

Konsolenprotokoll

t = 1, 2, 3

t =( 17 )+(1, 2, 3)

t[ 0 ]

1
t[ 0 ]= 5
TypeError: 'tuple' object does not support item assignment

Der Aliaseffekt

Im folgenden Beispiel gibt es scheinbar die Liste ›a‹ und die Liste ›b‹. Verblüffenderweise wirkt sich eine Änderung an ›a‹ aber auf ›b‹ aus. Warum?

Konsolenprotokoll

a =[ 1, 2, 3 ]

b = a

a[ 1 ]= 7

a

[1, 7, 3]
b
[1, 7, 3]

a‹ und ›b‹ sind nur zwei verschiedene Namen, die beide an dieselbe  Liste gebunden sind!

Konsolenprotokoll
a == b
True
a is b
True

Durch die Auswahl »:« kann aber eine Kopie  einer Liste als separates Objekt  angelegt werden.

Konsolenprotokoll

a =[ 1, 2, 3 ]

b = a[ : ]

a == b

True
a is b
False

a[ 1 ]= 7

a

[1, 7, 3]
b
[1, 2, 3]

Bei Strings oder Tupel kopiert »:« aber nicht. Da diese Objekte unveränderlich sind, gibt es keinen Bedarf für Kopien.

Konsolenprotokoll

a =( 1, 2, 3 )

b = a[ : ]

a is b

True
Konsolenprotokoll

a = "123"

b = a[ : ]

a is b

True

Übungsfragen

?   Änderungen an verschachtelten Listen

In der unten definierten Liste ›a‹ soll die an ›1‹ gebundene Stelle an ›7‹ gebunden werden. Dazu soll eine mit »= 7« endende Bindungsanweisung verwendet werden. Was muß auf der linken Seite jener Bindungsanweisung stehen?

Vorbereitung
a =[ [ 1, 2 ], [ 3, 4 ]]
Diese Ausgabe zeigt, welche Änderung hervorgerufen werden soll
print( a )
[[7, 2], [3, 4]]

?   Erstellen einer homogenen Liste

Was wäre eine kurze Schreibweise zum Anlegen einer Liste mit dem Namen »a«, die zwanzigmal den Wert «0» enthält?

Diese Ausgabe zeigt, welche Änderung hervorgerufen werden soll
print( a )
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723996 stefan_ram:723996 Änderungen von Listen in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723996, slrprddef723996, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/aenderungen_python