¿Cómo construir un conjunto de elementos de lista en python?

Tengo una list de nombres de archivo en python y me gustaría construir un set de todos los nombres de archivo.

 filelist=[] for filename in filelist: set(filename) 

Parece que esto no funciona. ¿Cómo se puede hacer esto?

Si tiene una lista de objetos hashable (los nombres de archivos probablemente serían cadenas, por lo que deberían contar):

 lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis] 

Puedes construir el set directamente:

 s = set(lst) 

De hecho, ¡el set funcionará de esta manera con cualquier objeto iterable! (¿No es bueno escribir pato?)


Si quieres hacerlo de forma iterativa:

 s = set() for item in iterable: s.add(item) 

Pero rara vez hay una necesidad de hacerlo de esta manera. Solo lo menciono porque el método set.add es bastante útil.

La solución más directa es esta:

  s = set(filelist) 

El problema en su código original es que los valores no estaban asignados al conjunto . Aquí está la versión arreglada de su código:

  s = set() for filename in filelist: s.add(filename) print(s) 

Tu puedes hacer

 my_set = set(my_list) 

o, para Python 3,

 my_set = {*my_list} 

para crear un conjunto a partir de una lista. A la inversa, también puedes hacer.

 my_list = list(my_set) 

o, para Python 3,

 my_list = [*my_set] 

para crear una lista de un conjunto.

Solo tenga en cuenta que el orden de los elementos en una lista generalmente se pierde al convertir la lista en un conjunto, ya que un conjunto está intrínsecamente desordenado. (Sin embargo, una excepción en CPython parece ser si la lista consta solo de enteros no negativos, pero supongo que esto es una consecuencia de la implementación de conjuntos en CPython y que este comportamiento puede variar entre diferentes implementaciones de Python).

Aquí hay otra solución:

 >>>list1=["C:\\","D:\\","E:\\","C:\\"] >>>set1=set(list1) >>>set1 set(['E:\\', 'D:\\', 'C:\\']) 

En este código, he usado el método set para convertirlo en un set y luego se eliminaron todos los valores duplicados de la lista.