我有一个整数列表,例如:[30,21,32,32,41,20,21,32,21,20]
我有一个X变量,X的值在列表范围内。
如何找到列表中所有元素的总和为X的数量。
例如,如果x为4,我希望:30+21+32+32
答案 0 :(得分:1)
另一种方法是使用itertools中的takewhile函数:
>>> import itertools
>>> sum(itertools.takewhile(lambda x: x<5, range(10)))
10
在你的情况下:
>>> l = [1,2,3,4,5,6,7,8,9]
>>> x = 5
>>> sum(itertools.takewhile(lambda i: i < x, l))
10
如果你想要到第5个元素,可以使用枚举和zip:
>>> sum(zip(*(itertools.takewhile(lambda i: i[0]<x-1, enumerate(l))))[1])
10
答案 1 :(得分:1)
如果你是初学者,你应该知道执行任务的常用方法是来定义一个函数
函数需要一个名称,通常需要一个或多个参数,在本例中sum_until
是名称,l
和n
是参数。
根据定义,有一些代码可以执行l
和n
的常规值的任务。函数return
最终是计算的结果,这里是语句return sum
。
注意函数定义末尾的注释# return sum
。您应该尝试控制在特殊情况下要执行的操作,此处在n
未找到l
时我们要执行的操作。一个选项是返回l
中所有数字的总和,另一个选项是返回一个不可能的值进行求和,第二个是我的选择。
def sum_until(l,n):
"returns the sum of the numbers in l that occur before the appearance of n"
sum = 0:
for num in l:
if num == n:
return sum
sum = sum + num
# return sum
return None
现在,我们必须使用函数。这是通过调用函数实现的,即你调用它的名字并告诉它你需要操作总和的实际值:
print(sum_until([2,4,6,8,5,10,12], 5))
print(sum_until([2,4,6,8,5,10,12], 3))
20
None
答案 2 :(得分:0)
如果要对x个第一个元素求和:
>>> l = [1,2,3,4,5,6,7,8,9]
>>> x = 5
>>> result = sum(l[:x])
>>> result
15
我的回答可能效率不高,但我很直接。