簡體   English   中英

Python 動態創建不可變對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM