如何在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实现中可能会有所不同)。