我有一个python中的文件名列表,我想从所有的文件名中构造一个集合。
filelist=[]
for filename in filelist:
set(filename)
这似乎并不奏效。怎么做呢?
我有一个python中的文件名列表,我想从所有的文件名中构造一个集合。
filelist=[]
for filename in filelist:
set(filename)
这似乎并不奏效。怎么做呢?
当前回答
您还可以使用列表推导式来创建set。
s = {i for i in range(5)}
其他回答
最直接的解决方法是:
s = set(filelist)
原始代码中的问题是没有将值分配给集合。下面是修改后的代码:
s = set()
for filename in filelist:
s.add(filename)
print(s)
您还可以使用列表推导式来创建set。
s = {i for i in range(5)}
如果你有一个哈希对象列表(文件名可能是字符串,所以它们应该算数):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
你可以直接构造集合:
s = set(lst)
事实上,set将以这种方式工作于任何可迭代对象!(鸭子打字很棒吧?)
如果你想迭代地做:
s = set()
for item in iterable:
s.add(item)
但是很少有必要这样做。我提到它只是因为布景。Add方法非常有用。
上面所有的答案都是正确的,但如果你想保持列表的顺序,你需要按照下面的步骤进行
list(dict.fromkeys(your_list))
用这样的迭代方式构造集合的一般方法是:
aset = {e for e in alist}