如何在Python中构build一个列表项?

我有一个在Python list的文件名list ,我想要构build一个所有的文件名。

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

这似乎并不奏效。 这怎么办?

如果你有一个可哈希对象列表(文件名可能是string,所以他们应该算):

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

你可以直接构造集合:

 s = set(lst) 

事实上, set将以任何可迭代的对象这种方式工作 (鸭子打字不好?)


如果你想迭代地做:

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

但是很less需要这样做。 我只提到它,因为set.add方法非常有用。

最直接的解决scheme是这样的:

  s = set(filelist) 

你原来的代码中的问题是这些值没有被分配给这个集合 。 以下是您的代码的固定版本:

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

这是另一个解决scheme:

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

在这段代码中,我使用set方法将它变成一个集合,然后从列表中删除所有重复的值

你可以做

 my_set = set(my_list) 

或者,对于Python 3,

 my_set = {*my_list} 

从列表中创build一个集合。 相反,你也可以这样做

 my_list = list(my_set) 

或者,对于Python 3,

 my_list = [*my_set] 

从一个集合创build一个列表。

请注意,列表中元素的顺序在将列表转换为集合时通常会丢失,因为集合本身是无序的。 (但是CPython中的一个例外似乎是列表只包含非负整数,但是我认为这是CPython中实现集合的结果,而且这种行为在不同的Python实现中可能会有所不同)。