[英]Python create immutable object dynamically
在將一些函數foo()應用於所有元素后,我試圖從列表中創建一個不可改變的對象,特別是一個freezeset 。 也就是說:
my_list = ['a_1', 'a_2', ... , 'a_n']
給定列表my_list ,我想要做的是對函數foo() 的所有元素執行,結果構建一個frozenset。 像這樣的東西:
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)
要么使用地圖():
my_set = frozenset(map(foo, my_list))
或發電機:
my_set = frozenset(foo(x) for x in my_list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.