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)
我正在尝试创建一个不可变的对象,特别是 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)