python - 查找整数列表中所有加起来等于一个数字的数字

标签 python list sorting

我在一次采访中被问到这个问题。给定以下列表:

[1,2,5,7,3,10,13]

找出加起来为 5 的数字。

我的解决方案如下:

#sort the list:
l.sort()
result = ()
for i in range(len(l)):
    for j in range(i, len(l)):
         if l[i] + l[j] > 5:
             break
         elif l[i] + l[j] == 5:
             result += (l[i], l[j])

我提出的想法是对列表进行排序,然后循环并查看总和是否大于 5。如果是,那么我可以停止循环。我感觉到面试官对这个答案不满意。有人可以推荐一个更好的供我将来引用吗?

最佳答案

这将返回总和为 5 的输入幂集中的所有元素:

>>> input = [1,2,5,7,3,10,13]
>>> import itertools
>>> def powerset(l):
...     return itertools.chain.from_iterable((itertools.combinations(l, i) for i in range(len(l)+1)))
...
>>> filter(lambda v: sum(v) == 5, powerset(input))
[(5,), (2, 3)]

关于python - 查找整数列表中所有加起来等于一个数字的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32319836/

相关文章:

python - 奇怪的 python 正则表达式行为 - 可能连接到 unicode 或 sqlalchemy

python - python中热图的层次聚类

C++使用STL列表,如何将现有列表复制到新列表中

Java:使用列表从持久性查询语言检索结果

algorithm - 在 O(n) 时间内使用黑盒算法计算中位数

python - 如何使用Python计算最近三个非nan值的平均值

python - 检查列表项是否包含来自另一个列表的子字符串

list - 您将如何遍历O(n ^ 0.5)中的链表?

php - 按字母顺序对文件行数组进行排序

c++ - 根据两个属性对类指针的 vector 进行排序?