如何在python中构造列表项的集合?

2024-04-24 08:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个list文件名,我想从所有文件名中构造一个set

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

这似乎行不通。怎么能这样?


Tags: infor文件名filenamelistsetfilelist
3条回答

如果您有一个可散列对象列表(文件名可能是字符串,因此应该计算):

lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]

可以直接构造集合:

s = set(lst)

实际上,set将以这种方式与任何iterable对象一起工作!(鸭子打字不是很好吗?)


如果要迭代执行,请执行以下操作:

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实现之间可能有所不同。)

相关问题 更多 >