2015-08-20 17 views
5

Qual è la differenza tra set("a") e sets.Set("a")? I loro tipi sono diversi, ma sembrano fare la stessa cosa.Set vs set python

Non riesco a trovare alcuna risorsa online, ma ho visto entrambi utilizzati negli esempi.

risposta

3

Il set predefinito() era basato sul vecchio set.Set() ed è più veloce.
Entrambi "fanno" la stessa cosa, anche se in Python 3 il modulo "set" non esiste più.

Ecco la risposta direttamente dalla libreria Python 2:
il built-in set e tipi frozenset sono stati progettati sulla base di lezioni apprese dal modulo set. Le differenze principali sono:

Set e ImmutableSet sono stati rinominati per impostare e frozenset.

- Non esiste alcun equivalente a BaseSet. Invece, usa isinstance (x, (set, frozenset)).

- L'algoritmo di hash per i built-in offre prestazioni significativamente migliori (meno collisioni) per la maggior parte dei set di dati.

- Le versioni integrate hanno sottaceti più efficienti.

- Le versioni integrate non hanno un metodo union_update(). Invece, usa il metodo update() che è equivalente.

- Le versioni integrate non hanno un metodo _repr (ordinato = True). Utilizzare invece le funzioni built-in repr() e sort(): repr (ordinato/i).

- La versione integrata non ha un protocollo per la conversione automatica a immutabile. Molti hanno trovato questa caratteristica confusa e nessuno nella comunità ha riferito di aver trovato usi reali per questo.

11

Hai codificato questo Python 3, quindi la differenza è che sets non esiste. Utilizzare set.

In Python 2, la differenza è che sets è deprecato. È la vecchia, lenta, non buona versione. Utilizzare set. Questo è spiegato nello documentation for the sets module, che viene immediatamente visualizzato alla ricerca di Python sets.

0

Non c'è molta differenza, e si dovrebbe utilizzare la funzione interna del modulo set o frozenset, invece di sets.

Il modulo imposta documentation itself says -

Sconsigliata a partire da versione 2.6: I tipi built-in set/frozenset sostituire questo modulo.

E non c'è il modulo sets in Python 3.x, solo Python 2.