Python:数学集和元组
Python: Mathematical Sets and Tuples
我正在我的 python 程序中实现一个方法来检查数学函数是否有效。
我的程序中的一个例子是:
['set',['tuple',1,2],['tuple',3,4]]
这等于,{(1,2),(3,4)}
对于 return True 的检查,集合中的所有元组必须有一个唯一的数字作为它们最左边的值。所以函数 {(1,2),(1,4)} 会 return false.
目前我已经为一个元组的集合实现了这个,这不需要检查元组中的唯一值:
if "set" in argument:
print("Found a set")
print("Next part of argument", argument[1])
if "tuple" in argument[1]:
print("Found a tuple, only one found so this argument is a function")
我不确定如何为可能包含上述示例的多个元组的集合实现此功能。
这个怎么样:
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'
,则统计元组中不同第一项的数量(通过测量其集合的长度),并将其与列表中“元组”的数量进行比较.
>>> is_function(['set',['tuple',1,2],['tuple',3,4]])
True
>>> is_function(['set',['tuple',1,2],['tuple',1,4]])
False
更好的解释:
函数首先测试列表的第一个元素是否为“set”,如果不是则函数终止(并且returns None
)。
一个集合是从生成器理解 element[1] for element in thing if element[0] == 'tuple'
创建的,它将是主列表中所有那些列表的所有第二个元素的集合,这些列表的第一个元素称为“元组” .该集合将包含所有第一个值,每个值一次(因为它是一个集合)。
该集合的基数存储在 different
中。就是"tuple"
.
后面不同元素的数量
从类似的生成器理解中计算出一个总和。同样,这遍历了所有第一个元素为“元组”的子列表,但加起来只是数字 1,因此结果将是以“元组”开头的子列表的数量。
函数return是different == tuples
的结果;所以 True
如果它们相同, False
否则。如果有多个“元组”具有相同的起始元素,那么 different
将小于 tuples
,因此它将 return False
。如果没有,它将 return 为真,因为具有不同起始元素的“元组”的数量将与“元组”的数量相同。
我正在我的 python 程序中实现一个方法来检查数学函数是否有效。
我的程序中的一个例子是:
['set',['tuple',1,2],['tuple',3,4]]
这等于,{(1,2),(3,4)} 对于 return True 的检查,集合中的所有元组必须有一个唯一的数字作为它们最左边的值。所以函数 {(1,2),(1,4)} 会 return false.
目前我已经为一个元组的集合实现了这个,这不需要检查元组中的唯一值:
if "set" in argument:
print("Found a set")
print("Next part of argument", argument[1])
if "tuple" in argument[1]:
print("Found a tuple, only one found so this argument is a function")
我不确定如何为可能包含上述示例的多个元组的集合实现此功能。
这个怎么样:
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'
,则统计元组中不同第一项的数量(通过测量其集合的长度),并将其与列表中“元组”的数量进行比较.
>>> is_function(['set',['tuple',1,2],['tuple',3,4]])
True
>>> is_function(['set',['tuple',1,2],['tuple',1,4]])
False
更好的解释:
函数首先测试列表的第一个元素是否为“set”,如果不是则函数终止(并且returns
None
)。一个集合是从生成器理解
element[1] for element in thing if element[0] == 'tuple'
创建的,它将是主列表中所有那些列表的所有第二个元素的集合,这些列表的第一个元素称为“元组” .该集合将包含所有第一个值,每个值一次(因为它是一个集合)。该集合的基数存储在
后面不同元素的数量different
中。就是"tuple"
.从类似的生成器理解中计算出一个总和。同样,这遍历了所有第一个元素为“元组”的子列表,但加起来只是数字 1,因此结果将是以“元组”开头的子列表的数量。
函数return是
different == tuples
的结果;所以True
如果它们相同,False
否则。如果有多个“元组”具有相同的起始元素,那么different
将小于tuples
,因此它将 returnFalse
。如果没有,它将 return 为真,因为具有不同起始元素的“元组”的数量将与“元组”的数量相同。