Python 动态创建不可变对象

Python create immutable object dynamically

我正在尝试创建一个不可变的对象,特别是 frozenset,在将某些函数 foo() 应用于所有元素后,从列表中创建。也就是说:

my_list = ['a_1', 'a_2', ... , 'a_n']

给定列表 my_list,我想做的是对所有元素执行函数 foo()结果构建了一个冻结集。像这样:

my_list = frozenset([foo('a_1'), foo('a_2'), ... ,  foo('a_n')])

我不知道是否有任何方法可以一次完成,因为如果我没记错的话,为了创建冻结集,我们迭代列表的元素,如果我们添加 foo() 函数的迭代应用,给了我两次通过,我的直觉告诉我它可以一次完成。

有什么方法可以利用迭代创建集合来做到这一点吗?

当然,如果您想要单次传递,请使用生成器,或者在这种情况下,map 非常适合:

frozenset(map(foo, my_list))

或者使用生成器,使用生成器表达式:

frozenset(foo(x) for x in my_list)

要么使用 map():

my_set = frozenset(map(foo, my_list))

或发电机:

my_set = frozenset(foo(x) for x in my_list)