Eu tenho um list
dos nomes de arquivos em python e gostaria de criar um set
de todos os nomes de arquivos.
filelist=[]
for filename in filelist:
set(filename)
Isso não parece funcionar. Como pode fazer isso?
Se você tiver uma lista de objetos que podem ser lavados (os nomes de arquivos provavelmente seriam cadeias de caracteres, então eles devem contar):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
você pode construir o conjunto diretamente:
s = set(lst)
De fato, set
funcionará dessa maneira com qualquer objeto iterável! (A digitação do pato não é ótima?)
Se você quiser fazer iterativamente:
s = set()
for item in iterable:
s.add(item)
Mas raramente é necessário fazê-lo dessa maneira. Eu apenas menciono isso porque o set.add
método é bastante útil.
y = set(x)
A solução mais direta é esta:
O problema no seu código original é que os valores não estavam sendo atribuídos ao conjunto . Aqui está a versão corrigida do seu código:
fonte
Você pode fazer
ou, para Python 3,
para criar um conjunto a partir de uma lista. Por outro lado, você também pode fazer
ou, para Python 3,
para criar uma lista de um conjunto.
Observe que a ordem dos elementos em uma lista geralmente é perdida ao converter a lista em um conjunto, pois um conjunto é inerentemente desordenado. (Uma exceção no CPython, no entanto, parece ser se a lista consiste apenas em números inteiros não negativos, mas presumo que isso seja uma consequência da implementação de conjuntos no CPython e que esse comportamento pode variar entre diferentes implementações do Python.)
fonte
Aqui está outra solução:
Neste código, usei o método set para transformá-lo em um conjunto e, em seguida, ele removeu todos os valores duplicados da lista
fonte
Uma maneira geral de construir conjuntos de maneira iterativa como esta:
fonte
Basta colocar a linha:
fonte