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

新手上路,请多包涵

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

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

这似乎不起作用。怎么能做到这一点?

原文由 securecoding 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 268
2 个回答

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

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

原文由 mgilson 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 s = set(filelist)

原始代码中的问题是未将值分配给 set 。这是您的代码的固定版本:

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

原文由 Raymond Hettinger 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏