*Prirejanje vrednosti tabelaričnega tipa

Oglejmo si ta primer:

>>> a = [1, 2, 3]
>>> b = a
>>> a[1] = 7
>>> a
[1, 7, 3]

Povsem pričakovano, kajne? Ko izpišemo še tabelo b, pa nas python preseneti:

>>> b
[1, 7, 3]

Kako lahko sprememba tabele a vpliva na tabelo b? Pričakovali bi, da stavek b = a ustvari novo tabelo b in vanjo skopira elemente tabele a. Vendar pa se to ne zgodi. Spremenljivka a namreč ne vsebuje celotne tabele a, pač pa zgolj njen pomnilniški naslov, torej mesto, kjer se tabela nahaja v računalnikovem pomnilniku. Pravimo, da je spremenljivka a zgolj kazalec na tabelo [1, 2, 3]. Ko izvedemo prireditev b = a, se v spremenljivko b skopira samo pomnilniški naslov. Sedaj imamo torej dve spremenljivki, ki kažeta na isto tabelo:

Prireditev a[1] = 7 nastavi drugi element tabele na vrednost 7:


Kako pa tabelo dejansko kopiramo (podvojimo)? Z izrazom tabela[:]:

>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 7
>>> a
[1, 7, 3]
>>> b
[1, 2, 3]

Sedaj imamo ločeni tabeli, na kateri kažeta spremenljivki a in b:

Pri preprostih podatkovnih tipih, kot so cela in realna števila, teh težav nimamo. Preizkusi sam(-a)!