[Python] Differenze tra liste e insiemi (era: Re: or)
Marco Buttu
mbuttu a oa-cagliari.inaf.it
Dom 30 Mar 2014 14:22:47 CEST
On 03/29/2014 07:53 PM, Nicola Larosa wrote:
> Daniele Zambelli wrote:
>> La differenza fondamentale è che in un insieme gli elementi
>> non sono ripetuti.
>
> Quella è una. Un'altra è che non sono ordinati.
Un'altra differenza rispetto alle liste e' che gli elementi di un set
devono essere immutabili:
>>> myset = {1, 2}
>>> myset = {1, [2]} # Errore, [2] e' mutabile
Traceback (most recent call last):
...
TypeError: unhashable type: 'list'
Visto che i set sono mutabili, questo implica ad esempio che non possono
essere usati come chiavi di un dizionario, e implica anche che un set
non puo' contenere un set:
>>> {1, {'a'}}
Traceback (most recent call last):
...
TypeError: unhashable type: 'set'
Una lista invece puo' contenere qualsiasi oggetto, per cui anche
un'altra lista:
>>> [1, ['a']]
[1, ['a']]
Esistono anche i set immutabili :) Sono istanze del tipo built-in
frozenset, e non esiste un letterale che li rappresenti, per cui vanno
creati chiamando direttamente la classe frozenset:
>>> fset = frozenset(('a', 0, 3, 'b', 'c'))
>>> {1, fset} # Set contenente un set (frozenset)
set([frozenset(['a', 0, 'c', 3, 'b']), 1])
>>> fset = frozenset(('a', 0, 3, 'b', 'c'))
>>> mydic = {1: 'uno', fset: 'foooo'}
--
Marco Buttu
INAF-Osservatorio Astronomico di Cagliari
Via della Scienza n. 5, 09047 Selargius (CA)
Phone: 070 711 80 217
Email: mbuttu a oa-cagliari.inaf.it
Maggiori informazioni sulla lista
Python