Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的元组比较_Python_Compare_Tuples - Fatal编程技术网

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”。