Python 查找数组中与另一数组中的元素匹配的两个整数之和
该函数接受两个数组arr1和arr2,将arr1中的任意两个整数的总和返回true到arr2中的任意元素。我尝试过这样做,但它给了我一个运行时错误 arr1[-1,8,3] arr2[3,7,2] 程序应重新运行true,因为arr2中的-1+3=2 2Python 查找数组中与另一数组中的元素匹配的两个整数之和,python,Python,该函数接受两个数组arr1和arr2,将arr1中的任意两个整数的总和返回true到arr2中的任意元素。我尝试过这样做,但它给了我一个运行时错误 arr1[-1,8,3] arr2[3,7,2] 程序应重新运行true,因为arr2中的-1+3=2 2 def SumArray(arr1, arr2): # Write your code here myDictionary ={} ct=False el=arr2.pop() for i in rang
def SumArray(arr1, arr2):
# Write your code here
myDictionary ={}
ct=False
el=arr2.pop()
for i in range(len(arr1)):
if arr1[i] in myDictionary:
# print(myDictionary[arr1[i],arr1[i]])
ct=True
return ct
else:
myDictionary[el-arr1[i]]= arr1[i]
ct=False
return ct
您可以执行以下类似操作:
for i in range(0, len(arr1)):
for j in range(1, len(arr1)):
if arr1[i] + arr1[j] in arr2:
print("TRUE")
print("FALSE")
您可以执行以下类似操作:
for i in range(0, len(arr1)):
for j in range(1, len(arr1)):
if arr1[i] + arr1[j] in arr2:
print("TRUE")
print("FALSE")
另一种方法是使用itertools:
import itertools
for x,y in itertools.combinations(arr1, 2):
if x+y in arr2:
print("TRUE")
break
else:
print("FALSE")
另一种方法是使用itertools:
import itertools
for x,y in itertools.combinations(arr1, 2):
if x+y in arr2:
print("TRUE")
break
else:
print("FALSE")
正如Blotosmetek所建议的:
import itertools
arr1 = [1,2,3,4,5]
arr2 = [3,6]
res = any(filter(lambda x: x[0]+x[1] in arr2, itertools.combinations(arr1,2)))
print(res)
正如Blotosmetek所建议的:
import itertools
arr1 = [1,2,3,4,5]
arr2 = [3,6]
res = any(filter(lambda x: x[0]+x[1] in arr2, itertools.combinations(arr1,2)))
print(res)
类似这样的事情也可能会起作用:
def func(list1, list2):
already_done = set()
for i, augend in enumerate(list1):
for j, addend in enumerate(list1):
if i == j or i in already_done:
continue
else:
number = augend + addend
if number in list2:
return True
else:
already_done.add(i)
return False
如果接受添加两倍相同的数字,还可以删除if语句的
if i==j
部分。类似的操作也可以实现以下目的:
def func(list1, list2):
already_done = set()
for i, augend in enumerate(list1):
for j, addend in enumerate(list1):
if i == j or i in already_done:
continue
else:
number = augend + addend
if number in list2:
return True
else:
already_done.add(i)
return False
def check_sum(arr1, arr2):
for i in range(len(arr1)):
val = arr1.pop()
for rem_val in arr1:
if(val+rem_val in arr2):
print(val, rem_val)
return(True)
else:
return(False)
如果接受添加两倍相同的数字,还可以删除if语句的if i==j
部分
def check_sum(arr1, arr2):
for i in range(len(arr1)):
val = arr1.pop()
for rem_val in arr1:
if(val+rem_val in arr2):
print(val, rem_val)
return(True)
else:
return(False)
Arr1是第一个数组。pop()将给出列表的最后一个值,并将其从列表中删除。所以,现在我只是运行一个循环,将最后一个值添加到所有可能的值中,并检查arr2的总和
Arr1是第一个数组。pop()将给出列表的最后一个值,并将其从列表中删除。因此,现在我正在运行一个循环,将最后一个值添加到所有可能的值中,并检查arr2的总和。虽然我试图通过@Abishek Kulkarni编辑答案,但被同行拒绝,建议将其作为答案发布。 所说的答案是不正确的,因为它将尝试将arr1的当前元素与自身相加,以用于第一次迭代之后的后续迭代。 更多说明:
for i in range(0, len(arr1)):
for j in range(1, len(arr1)):#starting with 1 here is not sufficient to avoid
#checking the self sum of the current element,
#for example when i=1 and j=1 then self sum of the element
#would be checked
if arr1[i] + arr1[j] in arr2:
print("TRUE")
print("FALSE")
以下是避免自和的修复方法,仅检查arr1的当前元素与arr1的每个其他元素(而不是自身)的组合:
虽然我试图通过@Abishek Kulkarni编辑答案,但被同行拒绝,建议将其作为答案发布。 所说的答案是不正确的,因为它将尝试将arr1的当前元素与自身相加,以用于第一次迭代之后的后续迭代。 更多说明:
for i in range(0, len(arr1)):
for j in range(1, len(arr1)):#starting with 1 here is not sufficient to avoid
#checking the self sum of the current element,
#for example when i=1 and j=1 then self sum of the element
#would be checked
if arr1[i] + arr1[j] in arr2:
print("TRUE")
print("FALSE")
以下是避免自和的修复方法,仅检查arr1的当前元素与arr1的每个其他元素(而不是自身)的组合:
你能粘贴错误的完整回溯吗?另外,请修复你的格式。什么是
输入
?名称错误:名称“输入”未定义你能粘贴错误的完整回溯吗?另外,请修复你的格式。什么是输入
?名称错误:名称“输入”未定义这一秒,但不是返回布尔值,而是打印所有大写字符串以符合预期结果。嵌套循环中似乎存在逻辑错误,这将导致检查相同元素的和(第一次迭代除外)。我已经编辑了您的代码,请务必审阅。我支持此操作,但不是返回布尔值,而是打印所有大写字符串以符合预期结果。嵌套循环中似乎存在逻辑错误,这将导致检查相同元素的和(第一次迭代除外)。我已经编辑了你的代码,一定要检查它。请把你的答案放在上下文中,而不是仅仅粘贴代码。有关更多详细信息,请参阅。请始终将答案放在上下文中,而不仅仅是粘贴代码。有关更多详细信息,请参阅。