[PIPython] sostituzione in lista

Nicola Larosa nico
Ven 19 Nov 2004 15:16:54 CET


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Ho una situazione di questo tipo:
> 
> lista = [1,2,3,4,"ale",5,6,"ale",8,9]
> 
> quale e' secondo voi il sistema piu' "pythonico" / efficiente per
> _sostituire_ ogni ricorrenza di "ale" con, esempio, None ? (o qualsiasi
> altro valore se per quello)

Per esempio così:

>>> try:
...     while True:
...         lista[lista.index('ale')] = None
... except ValueError:
...     pass
...
>>> lista
[1, 2, 3, 4, None, 5, 6, None, 8, 9]


> ho dato un'occhiata alle list comprehnsion ma non ho trovato un sistema
> per ottenere quello che mi interessa.

Eccone una, non bellissima: :-)

>>> [((elem != 'ale') and elem or None) for elem in lista]
[1, 2, 3, 4, None, 5, 6, None, 8, 9]

Le parentesi tonde non sono necessarie, ma aiutano a interpretare. Notare come 
non si può testare "elem == 'ale'", dato che il valore da sostituire può 
essere None. ;-)


- -- 
Nicola Larosa - nico a tekNico.net

16.16. Why should I care what color the bikeshed is?
The really, really short answer is that you should not. The somewhat
longer answer is that just because you are capable of building a bikeshed
does not mean you should stop others from building one just because you
do not like the color they plan to paint it. -- FreeBSD FAQ

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQFBfj9SXv0hgDImBm4RAnr3AJ43Gh8LPpJBdAXIVaQvXLj2zZfE5wCfWrM5
XY2MrPCvpfOCTyYbJgG760w=
=2e/2
-----END PGP SIGNATURE-----



More information about the Python mailing list