Python:数学集合和元组

2024-04-16 10:02:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python程序中实现了一个方法来检查一个数学函数是否有效。在

我的程序中的一个例子是:

['set',['tuple',1,2],['tuple',3,4]]

相当于{(1,2),(3,4)} 要使检查返回True,集中的所有元组都必须有一个唯一的数字作为其最左边的值。因此函数{(1,2),(1,4)}将返回false。在

目前,我已经为一个包含一个元组的集合实现了这个方法,这将不需要检查元组中的唯一值:

^{pr2}$

我不确定如何为可能包含多个元组的集合实现这一点,就像上面的例子一样。在


Tags: 方法函数程序falsetrue数字数学例子
1条回答
网友
1楼 · 发布于 2024-04-16 10:02:06

这个怎么样:

def is_function(thing):
    if thing[0] == 'set':
        different = len(set(element[1] for element in thing if element[0] == 'tuple'))
        tuples = sum(1 for element in thing if element[0] == 'tuple')
        return different == tuples

如果第一个元素是'set',那么计算元组中不同的第一项的数量(通过测量其集合的长度),并将其与列表中“元组”的数量进行比较。在

^{pr2}$

更好的解释:

  1. 函数首先测试列表的第一个元素是否为“set”,如果不是,则函数终止(并返回None)。

  2. 从生成器理解element[1] for element in thing if element[0] == 'tuple'创建一个集合,它将是主列表中所有第二个元素的集合,这些元素的第一个元素称为“tuple”。这个集合将包含所有的第一个值,每个值一次(因为它是一个集合)。

  3. 该集合的基数存储在different中。它是"tuple"后面的不同元素的数量。

  4. 和是根据类似的生成器理解计算的。同样,这将迭代所有第一个元素为“tuple”的子列表,但加起来的只是数字1,因此结果将是以“tuple”开头的子列表的数量。

  5. 该函数返回different == tuples;如果它们相同,则返回True,否则返回{}。如果有几个具有相同起始元素的“元组”,那么different将小于tuples,因此它将返回False。如果没有,它将返回True,因为具有不同起始元素的“tuples”的数量将与“tuples”的数量相同。

相关问题 更多 >