Python动态创建不可变对象

Python动态创建不可变对象,python,iterator,immutability,frozenset,immutablelist,Python,Iterator,Immutability,Frozenset,Immutablelist,我试图在将一些函数foo()应用到列表的所有元素之后,从列表中创建一个inmmutable对象,特别是一个。也就是说: my_list = ['a_1', 'a_2', ... , 'a_n'] 给定listmy_list,我要做的是在所有元素上执行函数foo(),并生成一个冻结集。大概是这样的: my_list = frozenset([foo('a_1'), foo('a_2'), ... , foo('a_n')]) 我不知道是否有任何方法可以在一个过程中做到这一点,因为如果我没有弄

我试图在将一些函数foo()应用到列表的所有元素之后,从列表中创建一个inmmutable对象,特别是一个。也就是说:

my_list = ['a_1', 'a_2', ... , 'a_n']
给定listmy_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
非常适合:

frozenset(map(foo, my_list))
或使用生成器,使用生成器表达式:

frozenset(foo(x) for x in my_list)
或者使用map():

或发电机:

my_set = frozenset(foo(x) for x in my_list)
或者使用map():

或发电机:

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