我有一个python中的文件名列表,我想从所有的文件名中构造一个集合。
filelist=[]
for filename in filelist:
set(filename)
这似乎并不奏效。怎么做呢?
我有一个python中的文件名列表,我想从所有的文件名中构造一个集合。
filelist=[]
for filename in filelist:
set(filename)
这似乎并不奏效。怎么做呢?
当前回答
上面所有的答案都是正确的,但如果你想保持列表的顺序,你需要按照下面的步骤进行
list(dict.fromkeys(your_list))
其他回答
你可以这样做
my_set = set(my_list)
或者,在Python 3中,
my_set = {*my_list}
从列表创建集合。反过来,你也可以这样做
my_list = list(my_set)
或者,在Python 3中,
my_list = [*my_set]
从集合中创建一个列表。
请注意,在将列表转换为集合时,列表中元素的顺序通常会丢失,因为集合本质上是无序的。(不过,CPython中的一个例外似乎是列表仅由非负整数组成,但我假设这是CPython中集合实现的结果,并且这种行为在不同的Python实现之间可能有所不同。)
最直接的解决方法是:
s = set(filelist)
原始代码中的问题是没有将值分配给集合。下面是修改后的代码:
s = set()
for filename in filelist:
s.add(filename)
print(s)
用这样的迭代方式构造集合的一般方法是:
aset = {e for e in alist}
简单地说:
new_list = set(your_list)
您还可以使用列表推导式来创建set。
s = {i for i in range(5)}