在python中将可检索的唯一ID分配给不断变化的lambda列表?

在python中将可检索的唯一ID分配给不断变化的lambda列表?,python,lambda,uniqueidentifier,Python,Lambda,Uniqueidentifier,Q2: 假设我定义了另一个函数d [a(b(1)), # not the result of a(b(1)), but just a lambda object a(c(1)), # also items may more than 2 here if itertools.combinations(l, 4) b(c(1))] 但是我想用一个unque ID保留所有可能的项目,这意味着无论 ab,ac,ad,bc,bd,cd ================= ab,ac,bc 或

Q2:

假设我定义了另一个函数d

[a(b(1)),  # not the result of a(b(1)), but just a lambda object
 a(c(1)),  # also items may more than 2 here if itertools.combinations(l, 4)
 b(c(1))]
但是我想用一个unque ID保留所有可能的项目,这意味着无论

ab,ac,ad,bc,bd,cd
=================
ab,ac,bc

公关

“ac”为例:“ac”和其他可能的项目始终具有唯一ID绑定,然后我可以使用该唯一ID访问“ac”。我认为这就像为每个项目创建一个可扩展的哈希表

那么,是否可以为lambda项分配int-ID或“HASH”?我还希望这个映射关系能够作为文件存储在磁盘中,并且可以在以后检索

谢谢你的建议

解释Q2的示例

l= [a,b,e,d] 

只需使用
set
即可避免口述


它们对我很有用。

当你开始谈论散列时,我不清楚你想要什么。你能举一个例子,说明你希望一个给定函数的唯一ID是什么吗?问题更新了,谢谢。我认为你所做的是非常重要的。听起来好像您正试图保存将合成列表应用到对象的结果,并在以后使用它们。这就是所谓的“记忆化”。这很容易。问题在于,您希望能够通过网络完成这项工作,从而使其变得不平凡。可能有一个图书馆可以做到这一点,但我不知道有一个。谢谢,回忆录可能不适合我的情况,因为这里的“结果”可能会很大,所以,只将它们储存在pickle或类似的容器中不适合非琐碎的情况。而且,分配唯一id或散列可能还有另一个好处:在cpu速度较低的机器上,我可以重用在减少cpu使用之前计算的结果,在速度较快的机器上,我可以使用“lambda散列”来保存巨大的结果数据传输-我只是重新计算它们,因为机器速度较快。
set()
。迪克特在那里很复杂。
ab,ac,ad,bc,bd,cd
=================
ab,ac,bc
l= [a,b,c,d] 
l= [b,a,c,d] 
l= [a,b,e,d] 
=====================
l= [a,b,c,d] 
func_combos = itertools.combinations(l, 2)
compositions = [compose(f1, f2) for f1, f2 in func_combos] 

[compositions[x](100) for x in compositions]  # take very long time to finish
[result1,
 result2,
 result3,
 ... 
 ]

======== three days later on another machine ======
l= [a,c,b,e,f,g,h] 
[compositions[x](100) for x in compositions] # take very long time to finish

[newresult1,
 newresult2,
 newresult3,
 ... 
 ]

but wait: here we can saving time: take "ac" for example:

[result1, tag
 result2, tag_for_ac_aka_uniqueID_or_hash
 result3, tag
 ... 
 ]

we just need to check if the "ac" tag exists we can reduce the calculation:
if hash_of(ac) in list(result.taglist):
   copy result to new result: