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

新手上路,请多包涵

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

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

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

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

阅读 261
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 翻译
子站问答
访问
宣传栏