Supponiamo di avere una lista di set e voglio ottenere l'unione su tutti i set in quella lista. C'è un modo per farlo usando un'espressione generatore? In altre parole, come posso creare l'unione su tutti i set in tale elenco direttamente come frozenset
?Come creare l'unione di molti set usando un'espressione di generatore?
risposta
Basta usare the .union()
method.
>>> l = [set([1,2,3]), set([4,5,6]), set([1,4,9])]
>>> frozenset().union(*l)
frozenset([1, 2, 3, 4, 5, 6, 9])
Questo funziona per qualsiasi iterable iterable.
Notando semplicemente che è più pulito usare 'frozenset.union' come metodo non associato, se' l' contiene 'frozenset's ad es. 'Frozenset.union (* l)'. Lo stesso per 'set.union'. – vaultah
Espressione di generatore annidato. Ma penso che siano un po 'criptici, quindi il modo in cui KennyTM ha suggerito potrebbe essere più chiaro.
frozenset(some_item for some_set in some_sets for some_item in some_set)
+1 per intelligenza – aaronasterling
Questo è in effetti più chiaro, ma circa 4 volte più lento della soluzione di Kenny – fransua
Suppongo che ciò che si sta cercando di evitare è creazioni intermedi di oggetti frozenset come si sta costruendo il sindacato?
Ecco un modo per farlo. NOTA: questa originariamente utilizzato itertools.chain()
ma, come note di commento di Kenny, la versione di seguito è leggermente migliore:
import itertools
def mkunion(*args):
return frozenset(itertools.chain.from_iterable(args))
Invoke in questo modo:
a = set(['a','b','c'])
b = set(['a','e','f'])
c = mkunion(a,b) # => frozenset(['a', 'c', 'b', 'e', 'f'])
Usa 'chain.from_iterable' se stai andando a' .chain (* args) '. – kennytm
@KennyTM: buon punto, ho apportato la modifica. –
I risultati del test delle prestazioni (con python 3): la risposta di KennyTM è leggermente più veloce quando il numero di set <10000, ma questa risposta è leggermente più veloce con 30000 set –
- 1. Come posso cambiare il nome del set molti-a-molti autoreferenziale usando hibernate.reveng.xml?
- 2. Come creare una mappatura molti-a-molti in Entity Framework?
- 3. Come posso creare un generatore di tabelle di verità?
- 4. Generatore di frasi usando il Thesaurus
- 5. molti a molti e come ottenere un set di query da queryset
- 6. Ottenere elenco di unici molti-a-molti record da un set di query
- 7. Tabella di mappatura molti-a-molti
- 8. Come creare un generatore di righe in MySQL?
- 9. Come creare un generatore di ripetizioni in Python
- 10. Come configurare una relazione molti a molti usando l'API fluidica dell'entità API
- 11. Set di sottoinsiemi massimali indipendenti tramite un generatore C#
- 12. Come posso impostare una ricerca di facet con una relazione molti a molti usando Sunspot?
- 13. Mappatura di relazioni molti a molti con codice chiave esterna
- 14. Ordinamento di set usando std :: sort
- 15. Come creare uno a molti in SQLITE3?
- 16. Come creare una relazione molti a molti con le ultime build notturne di EF Core?
- 17. Imposta set di caratteri usando MySQLi
- 18. F # generatore di daterange?
- 19. Generatore di testo revolving
- 20. Come creare un set di dati Spark da un RDD
- 21. Come posso creare un set di oggetti personalizzati (Swift)?
- 22. Come creare set di dati simile a cifar-10
- 23. Come creare set di tabulazioni verticali in WPF?
- 24. Dati principali: cosa dovrei usare come Descrittore di ordinamento con set ordinato (ios5) in una relazione molti-molti
- 25. generatore di siti web statici
- 26. pyMySQL set set di caratteri di collegamento
- 27. Ruoli utente di framework Entity Relazione molti a molti
- 28. Utilizzo di Generatore ID applicazione vs Generatore ID database
- 29. Come creare un set con una matrice
- 30. Come creare XML da XML usando XSL?
Vedi anche: http://stackoverflow.com/ a/5182801/1959808 –