首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从有限集到有限集表示函数集

从有限集到有限集表示函数集
EN

Stack Overflow用户
提问于 2020-03-30 21:58:36
回答 1查看 102关注 0票数 2

我在想,在python中,有没有一种好的方法来创建从有限集A到从1到n的数字集的函数集?

例如,如果A={a,b,c,d,e,f,g}n=2,那么函数集可以被认为是A的所有可能的子集。但是如何在python中实现它呢?

EN

回答 1

Stack Overflow用户

发布于 2020-03-30 22:51:40

下面是从集合A到集合B的所有函数的生成器:

代码语言:javascript
运行
复制
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)))

例如,您可以通过以下方式使用它:

代码语言:javascript
运行
复制
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")}')

它打印以下输出(每个函数占一行):

代码语言:javascript
运行
复制
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

您还可以拥有所有可能函数的列表(或集合)(请注意:可能有很多!!):

代码语言:javascript
运行
复制
functions = list(f_generator(A, B))
f = functions[3] # the 4th function

现在,您可以将f用作常规函数(例如,您可以使用f("b"))

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60932181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档