On 18/09/2013 17:00, Piergiuliano Bossi wrote:
2013/9/18 Marco Beri <marcob...@gmail.com <mailto:marcob...@gmail.com>>
2013/9/18 Piergiuliano Bossi <pgbo...@gmail.com
<mailto:pgbo...@gmail.com>>
2) non usate liste, ma tuple, ma poi come compensate la mancanza
di append e remove (sembra una contraddizione in termini ma non
lo e', basterebbe che append e remove ritornino nuove strutture
dati, copie dell'originale)
Premetto che questa cosa dei parametri immutabili non è risolvibile
come vorresti tu.
Ad ogni modo un append immutabile è come se ci fosse:
>>> a = (1, 2, 3, 4)
>>> a += (5, 6) # Appendi due elementi ad una copia della vecchia
sequence
>>> a
(1, 2, 3, 4, 5, 6)
La remove è in effetti un po' più rognosa e bruttina:
>>> a = (1, 2, 3, 4, 5)
>>> a = a[:3] + a[3+1:] # Rimuove il terzo elemento da una copia
della vecchia sequence
>>> a
(1, 2, 3, 5)
Beh, non male, potrei scrivermi dei metodi che fanno queste cose in un
modo un po' piu' esplicito, ma l'idea c'e'. Eg: remove((1, 2, 3, 4, 5),
3) == (1, 2, 3, 5)
Forse anche questi potreberro esserti utili...? :-)
>>> t = (1,2,3,4,5)
>>> t[:-1] # Simil pop
(1, 2, 3, 4)
>>> t[::-1] # Simil reverse
(5, 4, 3, 2, 1)
>>> # Simil remove (in effetti non bellissimo...)
>>> t[:t.index(2)] + t[t.index(2)+1:]
(1, 3, 4, 5)
>>> # Stesso errore di list se provi a rimuovere qualcosa che non c'è
>>> t[:t.index(100)] + t[t.index(100) +1:]
Traceback (most recent call last):
File "<pyshell#131>", line 1, in <module>
t[:t.index(100)] + t[t.index(100) +1:]
ValueError: tuple.index(x): x not in tuple
Lorenzo
PS:
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python