Mam list
nazwę plików w pythonie i chciałbym utworzyć jedną set
z nazw plików.
filelist=[]
for filename in filelist:
set(filename)
To nie wydaje się działać. Jak to zrobić?
Mam list
nazwę plików w pythonie i chciałbym utworzyć jedną set
z nazw plików.
filelist=[]
for filename in filelist:
set(filename)
To nie wydaje się działać. Jak to zrobić?
Odpowiedzi:
Jeśli masz listę obiektów, które można mieszać (nazwy plików byłyby prawdopodobnie łańcuchami, więc powinny się liczyć):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
możesz skonstruować zestaw bezpośrednio:
s = set(lst)
W rzeczywistości set
będzie działać w ten sposób z każdym iterowalnym obiektem! (Czy pisanie kaczki nie jest świetne?)
Jeśli chcesz to zrobić iteracyjnie:
s = set()
for item in iterable:
s.add(item)
Ale rzadko trzeba to robić w ten sposób. Wspominam o tym tylko dlatego, że set.add
metoda jest całkiem przydatna.
y = set(x)
Najbardziej bezpośrednim rozwiązaniem jest to:
s = set(filelist)
Problem z oryginalnym kodem polega na tym, że wartości nie zostały przypisane do zestawu . Oto poprawiona wersja Twojego kodu:
s = set()
for filename in filelist:
s.add(filename)
print(s)
Możesz to zrobić
my_set = set(my_list)
lub, w przypadku Pythona 3,
my_set = {*my_list}
stworzyć zestaw z listy. I odwrotnie, możesz też to zrobić
my_list = list(my_set)
lub, w przypadku Pythona 3,
my_list = [*my_set]
stworzyć listę z zestawu.
Zwróć uwagę, że kolejność elementów na liście jest generalnie tracona podczas konwertowania listy na zestaw, ponieważ zestaw jest z natury nieuporządkowany. (Jedynym wyjątkiem w CPythonie wydaje się być sytuacja, w której lista składa się tylko z nieujemnych liczb całkowitych, ale zakładam, że jest to konsekwencja implementacji zestawów w CPythonie i to zachowanie może się różnić w różnych implementacjach Pythona).