Python动态创建不可变对象

问题描述 投票:0回答:2

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

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

给定列表my_list,我要执行的是对功能foo()的所有元素执行并生成一个冻结集。像这样的东西:

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

我不知道是否有任何方法可以单步执行此操作,因为如果我没记错的话,对于冻结集合的创建,我们将迭代列表中的元素,如果添加迭代函数[[foo()的应用程序给了我两次通过,我的直觉告诉我可以一次完成。

有什么办法可以通过利用迭代来创建集合吗?
python iterator immutability frozenset immutablelist
2个回答
0
投票
当然,如果要单次通过,请使用发生器,或者在这种情况下,map非常合适:

frozenset(map(foo, my_list))

或与生成器一起使用生成器表达式:

frozenset(foo(x) for x in my_list)


0
投票
要么使用map():

my_set = frozenset(map(foo, my_list))

或生成器:

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

© www.soinside.com 2019 - 2024. All rights reserved.