python中的函数/循环从列表中查找数字

时间:2019-02-23 13:12:34

标签: python python-3.x

是否仍然可以找到我可以从数字列表中选择的最大数字,总和不应超过15。例如:A = [2,5,3,1,10,4,5,9],B = 15输出:5。

到目前为止,我已经尝试过:

A,B = map(int,input().split(" "))
A = list(map(int,input().split(" ")))
A.sort()

4 个答案:

答案 0 :(得分:1)

对列表进行排序。遍历列表,汇总到当前的loopindex。如果结果大于15,则返回上一个索引。

A= [2,5,3,1,10,4,5,9]
A.sort()
for i in range(len(A)):
    if sum(A[:i]) > 15:
        print(i-1)
        break

输出:
5

答案 1 :(得分:1)

@ J.D。回答的类似方法。但是我们可以使用变量sum并每次添加一个元素并进行检查,而不必每次都计算sum

>>> A = [2,5,3,1,10,4,5,9]
>>> A.sort()
>>> sum = 0
>>> for i in range(len(A)):
...   sum += A[i]
...   if sum > 15:
...     print(i)
...     break
... 
5

答案 2 :(得分:1)

# Precondition: a must be in monotonically increasing order
def max_numbers(a, b):
    s = 0
    for i, n in enumerate(a):
        s += n
        if s > b:
            return i

print(max_numbers(a, b))

答案 3 :(得分:0)

您还可以扩展@ J.D。的方法并使用numpy。您可以对数组求和,然后检查每个元素的总和是否超过15。

import numpy as np

a = np.array([2, 5, 3, 1, 10, 4, 5, 9]).sort()

cum_sum =  np.cumsum(a)<16 # returns an array of bools

print(cum_sum.sum())

返回:

5