2024-04-24 08:33:17 发布
网友
我在python中有一个list文件名,我想从所有文件名中构造一个set。
list
set
filelist=[] for filename in filelist: set(filename)
这似乎行不通。怎么能这样?
如果您有一个可散列对象列表(文件名可能是字符串,因此应该计算):
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方法非常有用。
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)
my_list = [*my_set]
从集合创建列表。
请注意,在将列表转换为集合时,列表中元素的顺序通常会丢失,因为集合本身就是无序的。(不过,CPython中的一个例外似乎是,如果列表仅由非负整数组成,但我假设这是CPython中的集合实现的结果,并且此行为在不同的Python实现之间可能有所不同。)
如果您有一个可散列对象列表(文件名可能是字符串,因此应该计算):
可以直接构造集合:
实际上,
set
将以这种方式与任何iterable对象一起工作!(鸭子打字不是很好吗?)如果要迭代执行,请执行以下操作:
但很少有必要这样做。我之所以提到它,是因为
set.add
方法非常有用。最直接的解决方案是:
原始代码中的问题是,这些值没有分配给集合。这是您的代码的固定版本:
你可以的
或者,对于Python 3
从列表中创建集合。相反,你也可以
或者,对于Python 3
从集合创建列表。
请注意,在将列表转换为集合时,列表中元素的顺序通常会丢失,因为集合本身就是无序的。(不过,CPython中的一个例外似乎是,如果列表仅由非负整数组成,但我假设这是CPython中的集合实现的结果,并且此行为在不同的Python实现之间可能有所不同。)
相关问题 更多 >
编程相关推荐