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: mbu...@oa-cagliari.inaf.it

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a