我有一个list
中的文件名蟒的,我想构建一个set
了所有的文件名。
filelist=[]
for filename in filelist:
set(filename)
这似乎并没有工作。 如何才能做到这一点?
我有一个list
中的文件名蟒的,我想构建一个set
了所有的文件名。
filelist=[]
for filename in filelist:
set(filename)
这似乎并没有工作。 如何才能做到这一点?
如果你有可哈希对象列表(文件名很可能是字符串,所以应该算):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
您可以直接构建集:
s = set(lst)
事实上, set
将这种工作方式与任何迭代的对象! (是不是鸭打字很大?)
如果要反复做:
s = set()
for item in iterable:
s.add(item)
但是有很少需要做这种方式。 我只提到它,因为set.add
方法是非常有用的。
最直接的解决办法是这样的:
s = set(filelist)
在原始代码的问题是,这些值没有被分配到组 。 这里是你的代码的固定后续版本:
s = set()
for filename in filelist:
s.add(filename)
print(s)
你可以做
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实现之间改变执行的结果。)
这里是另一种解决方案:
>>>list1=["C:\\","D:\\","E:\\","C:\\"]
>>>set1=set(list1)
>>>set1
set(['E:\\', 'D:\\', 'C:\\'])
在这段代码中我使用了一套方法,以便把它变成一组,然后从列表中删除所有重复值