Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x_List - Fatal编程技术网

Python—在一个列表中查找其和等于给定值的元素的最小数目

Python—在一个列表中查找其和等于给定值的元素的最小数目,python,python-3.x,list,Python,Python 3.x,List,如果我有 list = [9, 4, 1, 8, 6] 我的给定值是- n = 14 我希望输出是一个列表,其中包含最小数量的元素,元素的和等于给定的值- output = [8, 6] 谁能告诉我如何在Python中实现它?我仅限于numpy,无法导入任何其他模块 我在javascript中找到了一个实现,但在python中找不到相同的实现-这段代码似乎满足了您的需要。这可能不是最有效的方法,但没有更多的信息,这是我能做的最好的 list1 = [9, 4, 1, 8, 6] list1

如果我有

list = [9, 4, 1, 8, 6]
我的给定值是-

n = 14
我希望输出是一个列表,其中包含最小数量的元素,元素的和等于给定的值-

output = [8, 6]
谁能告诉我如何在Python中实现它?我仅限于numpy,无法导入任何其他模块


我在javascript中找到了一个实现,但在python中找不到相同的实现-

这段代码似乎满足了您的需要。这可能不是最有效的方法,但没有更多的信息,这是我能做的最好的

list1 = [9, 4, 1, 8, 6]
list1.sort()
n = 14
output = list()
for num in list1:
    for test in list1:
        if num + test == n:
            output = [num, test]
            break
    if output:
        break

print(output)

其思想是首先按升序对列表进行排序,然后在其上循环。在循环中,我们再次循环相同的列表以查找匹配的第一次出现。一旦找到匹配项,我们将打破两个循环。

尝试过什么吗?@RaySteam我试图找到所有可能的集合,然后检查最小的集合,但程序太长了,所以我停止了工作。重复@DarrylG感谢您的回答,但在我的情况下,输出不必总是连续子数组