python - 返回数组还是布尔值?
问题描述
给定一个整数数组,找到数组中四个元素的任意一个组合,其总和等于给定值 X。我需要返回所有子数组的数组,验证我想以递归方式解决此问题的条件,我可以返回最终条件是真还是假,但不返回长度为 4 且总和 = X 的数组
def function(array, target):
if len(array) == 4:
if sum(array) == target:
return True
else:
return False
return function(array[1:], target) or function(array[:-1], target)
它为数组返回 False :[7, 4, 6, -1, 1, 2]
而不是 True
解决方案
递归不是在这里进行的好方法,因为您不想在“缩减”数组上应用相同的函数。您想测试所有组合,所以我强烈建议使用itertools
.
itertools.combinations(my_array, my_length)
使所有可能的组合my_array
的元素都具有长度my_length
,而不重复(这意味着顺序无关紧要,您不会同时拥有 [a,b] 和 [b,a])
from itertools import combinations
L = [1, 2, 3, 4, 5, 1]
target = 10
for i in combinations(L, 4):
if sum(i) == target:
print(i)
输出 :
(1, 2, 3, 4)
(1, 3, 5, 1)
(2, 3, 4, 1)
推荐阅读
- javascript - Paypal 结帐按钮,不适用于 Node.js 和 Express
- c# - 在 c# 中使用新版本的 chromedriver、chrome 和 selenium 时出现点击问题
- numpy - 在 numpy 中交换值和索引
- c# - 从 sqlite 查询时 DateTime 不正确
- sql-server - 在 SQL 中声明标量变量错误 - SSMS
- vue.js - 使用其他浏览器时如何在 Vue.js 中设置警报?
- mysql - 在动态日期上增加行索引并与其他表联合
- angular - Angular中的递增/递减数字
- sql - 在 SQL 中按特定组添加具有计数和总和的列
- java - 编写一个使用线程计算忽略操作顺序的表达式的 Java 程序?