Python:数学集和元组
我在python程序中实现了一个方法,用于检查数学函数是否有效 我的计划中的一个例子是:Python:数学集和元组,python,list,math,set,tuples,Python,List,Math,Set,Tuples,我在python程序中实现了一个方法,用于检查数学函数是否有效 我的计划中的一个例子是: ['set',['tuple',1,2],['tuple',3,4]] 等于,{(1,2),(3,4)} 要使检查返回True,集合中的所有元组必须具有唯一的数字作为其最左边的值。所以函数{(1,2),(1,4)}将返回false 目前,我已经为一个具有一个元组的集合实现了这一点,这将不需要检查元组中的唯一值: if "set" in argument: print("Found a set")
['set',['tuple',1,2],['tuple',3,4]]
等于,{(1,2),(3,4)}
要使检查返回True,集合中的所有元组必须具有唯一的数字作为其最左边的值。所以函数{(1,2),(1,4)}将返回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
更好的解释:
None
)
元素[1]创建一个集合,该集合将是主列表中所有这些列表的所有第二个元素的集合,这些列表具有称为“tuple”的第一个元素。此集合将包含所有第一个值,每个值一次(因为它是一个集合)
different
中。它是直接在“tuple”
之后的不同元素的数量
different==tuples
的结果;因此,如果它们相同,则为True
,否则为False
。如果有多个“元组”具有相同的起始元素,则different
将小于tuples
,因此它将返回False
。如果没有,它将返回True,因为具有不同起始元素的“元组”的数量将与“元组”的数量相同
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
更好的解释:
None
)
元素[1]创建一个集合,该集合将是主列表中所有这些列表的所有第二个元素的集合,这些列表具有称为“tuple”的第一个元素。此集合将包含所有第一个值,每个值一次(因为它是一个集合)
different
中。它是直接在“tuple”
之后的不同元素的数量
different==tuples
的结果;因此,如果它们相同,则为True
,否则为False
。如果有多个“元组”具有相同的起始元素,则different
将小于tuples
,因此它将返回False
。如果没有,它将返回True,因为具有不同起始元素的“元组”的数量将与“元组”的数量相同
你最好修改你想要处理的数据结构,可能是像
{'type':'set','data':[{'type':'tuple','data':(1,2)},{'type':'tuple','data':(3,4)}}这样的字典或是一个类之类的。它看起来像是一个家庭作业,因此,我不会为您编写代码,但我可以给出一些提示:使用for
循环遍历列表的其余部分,并创建一个set
,这样您就可以检查元组中的第一个值是否已经存在,因此它不是唯一的。@TonyBabarino谢谢,我给你一个例子,你最好修改你想要处理的数据结构,可能是一个字典,比如{'type':'set','data':[{'type':'tuple','data':(1,2)},{'type':'tuple','data':(3,4)}
或者一个类或者什么的。它看起来像是一个家庭作业,因此,我不会为您编写代码,但我可以给出一些提示:使用for
循环遍历列表的其余部分,并创建一个set
,这样您就可以检查元组中的第一个值是否已经存在,因此它不是唯一的。@TonyBabarino谢谢,我要试一试虽然这确实有效,但我不太确定是否接受它,因为我不太确定这种方法到底发生了什么。@hezzag我很乐意更好地解释它,如果你愿意的话。@hezzag补充了一个更详细的解释。虽然这确实有效,但我还是犹豫是否接受它,因为我不太确定这个方法到底发生了什么。@hezzag如果你愿意的话,我很乐意更好地解释。@hezzag补充了一个更详细的解释。