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ć?
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:
Problem z oryginalnym kodem polega na tym, że wartości nie zostały przypisane do zestawu . Oto poprawiona wersja Twojego kodu:
źródło
Możesz to zrobić
lub, w przypadku Pythona 3,
stworzyć zestaw z listy. I odwrotnie, możesz też to zrobić
lub, w przypadku Pythona 3,
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).
źródło
Oto inne rozwiązanie:
W tym kodzie użyłem metody set, aby przekształcić ją w zestaw, a następnie usunąłem wszystkie zduplikowane wartości z listy
źródło
Jeden ogólny sposób konstruowania zestawu w iteracyjny sposób:
źródło
Po prostu umieść wiersz:
źródło