我在想,在python中,有没有一种好的方法来创建从有限集A到从1到n的数字集的函数集?
例如,如果A={a,b,c,d,e,f,g}和n=2,那么函数集可以被认为是A的所有可能的子集。但是如何在python中实现它呢?
发布于 2020-03-30 22:51:40
下面是从集合A到集合B的所有函数的生成器:
from functools import partial
from itertools import product
def f_generator(A, B):
def f_template(d, x):
return d[x]
for b_values in product(B, repeat=len(A)):
yield partial(f_template, dict(zip(A, b_values)))例如,您可以通过以下方式使用它:
A = ["a", "b"]
B = [1, 2, 3]
for f in f_generator(A, B):
# f is the function, and you can use it as you expect: y=f(x)
print(f'f("a")={f("a")}, f("b")={f("b")}')它打印以下输出(每个函数占一行):
f("a")=1, f("b")=1
f("a")=1, f("b")=2
f("a")=1, f("b")=3
f("a")=2, f("b")=1
f("a")=2, f("b")=2
f("a")=2, f("b")=3
f("a")=3, f("b")=1
f("a")=3, f("b")=2
f("a")=3, f("b")=3您还可以拥有所有可能函数的列表(或集合)(请注意:可能有很多!!):
functions = list(f_generator(A, B))
f = functions[3] # the 4th function现在,您可以将f用作常规函数(例如,您可以使用f("b"))
https://stackoverflow.com/questions/60932181
复制相似问题