`set` aus Generator und Liste bilden...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

zwei Möglichkeiten, um aus Generator und Liste ein Set zu bilden:

Code: Alles auswählen

>>> g = (e for e in range(10))
>>> l = [10, 11, 12]
>>> set(g).union(set(l))
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
>>> g = (e for e in range(10))
>>> set(list(g) + l)
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Beides Quatsch oder egal, welche man nutzt?

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code: Alles auswählen

set(g).union(l)
oder

Code: Alles auswählen

>>> s = set(g)
>>> s.update(l)
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code: Alles auswählen

>>> set(list(g) + l)
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Ist aus 2 Gruenden schlecht: 1. Du erstellst eine Liste, die du nicht brauchst (`list(g)`) und direkt wegwirfst; 2. Erstellst du noch eine Liste, die du nicht brauchst `list(g) + l`.

Also wenn du nicht garantieren kannst, dass das kleine Listen sind, solltest du die Finger davon lassen ;)
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Um keine unnötigen "set"s zu erzeugen :P

Code: Alles auswählen

import itertools
set(itertools.chain(g,l))
Antworten