python中的元组比较
我有一些简单的代码,看起来像:python中的元组比较,python,compare,tuples,Python,Compare,Tuples,我有一些简单的代码,看起来像: >>> a = ('1', '2', '3', '4', '5') >>> b = ('2', '6') >>> >>> def comp(list1, list2): ... for val in list1: ... if val in list2: ... return True ... return False ... >
>>> a = ('1', '2', '3', '4', '5')
>>> b = ('2', '6')
>>>
>>> def comp(list1, list2):
... for val in list1:
... if val in list2:
... return True
... return False
...
>>> print comp(a, b)
True
请帮助我理解为什么我收到“真实”?如何找到两个元组之间的完全匹配
谢谢。语句return语句退出函数,可以选择将表达式传回调用方 所以如果你写:
a = ('1', '2', '3', '4', '5')
b = ('6', '2')
def comp(list1, list2):
for val in list1:
if val in list2:
return True
return False
print comp(a, b)
答案将是False
。
因此,解决方案:
a = ('1', '2', '3', '4', '5')
b = ('2', '3')
def comp(list1, list2):
for val in list1:
if val not in list2:
return False
return True
print comp(b, a) # This will written True
print comp(a, b) # This will written False
你应该稍微修改一下你的代码。希望这会有所帮助
def comp(list1, list2):
for val in list1:
if val not in list2:
return False
return True
在a中的2处,函数已短路并返回True。说“找到完全匹配”是不明确的,你的意思是“交叉点”,保留或不保留顺序?你能描述一下你的预期结果吗?是否要检查其中一个是否是另一个的子集?要查看两个元组是否包含彼此完全相同的元素吗?当
val
为'2'
时,条件如果列表2中的val匹配,函数将立即返回true,因为这是您编写的。如果你想要别的东西,你需要给出一个更清晰的描述。你不应该在交互式解释器中做这些事情。将命令写入文件,在返回True
上方的行中插入print('val',val)
,您就知道为什么“算法”返回True
。当元组“b”中的所有元素都与元组“a”匹配,而元组“b”中的某些元素在元组“a”中找不到时,我希望收到“True”。