LinuxLudus: Python-domande varie

Valerio Pachera sirio81@gmail.com
Gio 22 Maggio 2008 11:21:58 CEST


2008/5/22 John Leach <john.leach@syger.com>:
> Concordo con quello che ha detto molto concisamente Federico. Oggi
> giorno direi che lista == array == vector, tanto quanto map == hash ==
> dictionary == associated array.

Perfetto, hai già risposto alla seconda domanda che avevo :)

> Una variable e' solo un 'etichetta' ad un valore, che in realta' (almeno
> per Python, come Ruby, e C#) e' sempre un oggetto. Quindi
>
> nome = "carlo"
> nomi = ["carlo","valerio",christian"]
>
> Sia nome sia nomi sono variabili che 'puntano' ad *un solo valore*, una
> stringha nel primo caso, ed una lista nella seconda.

Bene bene, quindi una lista è un puntatore alle aree di memoria (se
così si può dire).
Questo esempio penso chiarisca il concetto di puntatore (lo scrivo per
chiarirmi le idee io, ma potrebbe interessare qualcun'altro).

#code=utf-8
lista1 = range (10)
lista2 = lista1

lista1.remove (5)
print lista2

#restituisce  [0, 1, 2, 3, 4, 6 , 7 ,9] nonostante l'operazione di
rimozione sia stata fatta su lista1 e non lista2.


Al contrario, con le "semplici" variabili, il contenuto della
variabile viene passato come valore e non come riferimento
(terminologia basic)

#code=utf-8
var1= "ciao"
var2 = var1

var1="hallo"
print var2

#stampa "ciao" e non "hallo"

E' possibile passare i valori per riferimento alle variabili in python?

> La lista
> naturalmente contiene altri oggetti, me se vogliamo essere pedantico,
> anche la stringha (perche' contiene caratteri). Non per nulla che si usa
> la stessa sintasse in questi casi per estrarre un elemento:
>
> primo_carattere = nome[0]
> primo_nome = nomi[0]

confermo:

#code=utf-8
for lettera in "parola":
	print lettera

stampa
p
a
r
o
l
a

> FYI (anche se lo sai ;-)
> http://groups.google.com/group/it.comp.lang.python/topics

Non lo sapevo, vado a darci un'occhiata.


> A volte pero` e` _obbligatorio_ che una sequenza sia immutabile, e
l'esempio classico sono le chiavi dei dizionari

Ok, pensavo potesse avere a che fare con le performance, ad esempio
occupare meno memoria, invece è una questione di concetto.

Grazie!


Maggiori informazioni sulla lista linuxludus