Seite 1 von 1

`set` aus Generator und Liste bilden...

Verfasst: Donnerstag 22. August 2013, 14:16
von mutetella
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

Re: `set` aus Generator und Liste bilden...

Verfasst: Donnerstag 22. August 2013, 14:37
von EyDu

Code: Alles auswählen

set(g).union(l)
oder

Code: Alles auswählen

>>> s = set(g)
>>> s.update(l)

Re: `set` aus Generator und Liste bilden...

Verfasst: Donnerstag 22. August 2013, 15:04
von cofi

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 ;)

Re: `set` aus Generator und Liste bilden...

Verfasst: Donnerstag 22. August 2013, 15:16
von Sirius3
Um keine unnötigen "set"s zu erzeugen :P

Code: Alles auswählen

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