Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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 2.7 从2列表中查找和等于给定值的对_Python 2.7_Performance_For Loop_Execution Time - Fatal编程技术网

Python 2.7 从2列表中查找和等于给定值的对

Python 2.7 从2列表中查找和等于给定值的对,python-2.7,performance,for-loop,execution-time,Python 2.7,Performance,For Loop,Execution Time,我们有两个整数数组,a和b,以及一个整数目标值v。确定是否有一对数字,其中一个数字取自a,另一个取自b,可以相加得到v的和。如果存在这样一对,则返回true,否则返回false 例如: 对于a=[1,2,3],b=[10,20,30,40]和v=42,输出应为 sumOfTwo(a, b, v) = True 到目前为止,我的代码是: def sumOfTwo(a, b, v): for x in a: for y in b: if x+y =

我们有两个整数数组,a和b,以及一个整数目标值v。确定是否有一对数字,其中一个数字取自a,另一个取自b,可以相加得到v的和。如果存在这样一对,则返回true,否则返回false

例如: 对于
a=[1,2,3]
b=[10,20,30,40]
v=42
,输出应为

sumOfTwo(a, b, v) = True
到目前为止,我的代码是:

def sumOfTwo(a, b, v):
    for x in a:
        for y  in b:
            if x+y == v:
                return True
    return False

我想减少执行时间,因为执行长列表需要很长时间。

如果您首先将
b
转换为一个集合,应该会快得多:

def sumOfTwo(a, b, v):
    b = set(b)
    return any(v - x in b for x in a)

对于暴力解决方案,复杂性应该是O(M+N),而不是O(MN)。

给定的两个列表是否排序??如果是这样的话,那就相当简单了。不,也尝试了排序,但无法减少执行时间。还尝试了
res=any(b中的v-x代表a中的x)
这些“长列表”大致有多长?10000项或更多。相关/可能的dup: