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