如何构建一套从列表项的蟒蛇?(How to construct a set out of list

2019-08-19 01:48发布

我有一个list中的文件名蟒的,我想构建一个set了所有的文件名。

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

这似乎并没有工作。 如何才能做到这一点?

Answer 1:

如果你有可哈希对象列表(文件名很可能是字符串,所以应该算):

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方法是非常有用的。



Answer 2:

最直接的解决办法是这样的:

 s = set(filelist)

在原始代码的问题是,这些值没有被分配到 。 这里是你的代码的固定后续版本:

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


Answer 3:

你可以做

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实现之间改变执行的结果。)



Answer 4:

这里是另一种解决方案:

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

在这段代码中我使用了一套方法,以便把它变成一组,然后从列表中删除所有重复值



文章来源: How to construct a set out of list items in python?
标签: python list set