Uczę się Pythona i mam początkowe pytanie dotyczące inicjalizacji zestawów. Podczas testów odkryłem, że zestaw można zainicjować w następujący sposób:
my_set = {'foo', 'bar', 'baz'}
Czy są jakieś wady zrobienia tego w ten sposób, w przeciwieństwie do standardowego sposobu:
my_set = set(['foo', 'bar', 'baz'])
czy to tylko kwestia stylu?
python
python-2.7
set
fvrghl
źródło
źródło
Odpowiedzi:
Istnieją dwa oczywiste problemy ze składnią zestawu literału:
my_set = {'foo', 'bar', 'baz'}
Nie jest dostępny przed wersją Python 2.7
Nie ma możliwości wyrażenia pustego zestawu przy użyciu tej składni (użycie
{}
tworzy pusty dict)Te mogą być dla Ciebie ważne, ale nie muszą.
Sekcja dokumentacji opisująca tę składnię jest tutaj .
źródło
Porównaj także różnicę między
{}
izset()
argumentem pojedynczego słowa.>>> a = set('aardvark') >>> a {'d', 'v', 'a', 'r', 'k'} >>> b = {'aardvark'} >>> b {'aardvark'}
ale oba
a
ib
są oczywiście zestawami.źródło
set([])
raczej niż tylkoset()
.set()
zawsze przyjmuj jeden argument. Pojedyncza iterowalna.Z dokumentacji Pythona 3 ( to samo dotyczy Pythona 2.7 ):
w pythonie 2.7:
>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'} >>> my_set set(['bar', 'foo', 'baz'])
Pamiętaj, że
{}
jest również używany domap
/dict
:>>> m = {'a':2,3:'d'} >>> m[3] 'd' >>> m={} >>> type(m) <type 'dict'>
Do inicjalizacji zbiorów można również użyć wszechstronnej składni:
>>> a = {x for x in """didn't know about {} and sets """ if x not in 'set' } >>> a set(['a', ' ', 'b', 'd', "'", 'i', 'k', 'o', 'n', 'u', 'w', '{', '}'])
źródło
Musisz zrobić,
empty_set = set()
aby zainicjować pusty zestaw.{}
jest pustym dictionaty.źródło