Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List - Fatal编程技术网

Python列表算法

Python列表算法,python,list,Python,List,我有一个整数列表,例如:[30,21,32,32,41,20,21,32,21,20] 我有一个变量X,X的值在列表的范围内。 我怎样才能找到列表中所有元素的总和为X的数目。 例如,如果x为4,我希望:30+21+32+32另一种方法是使用itertools中的函数: >>> import itertools >>> sum(itertools.takewhile(lambda x: x<5, range(10))) 10 导入itertools >>

我有一个整数列表,例如:
[30,21,32,32,41,20,21,32,21,20]
我有一个变量X,X的值在列表的范围内。 我怎样才能找到列表中所有元素的总和为X的数目。
例如,如果x为4,我希望:
30+21+32+32

另一种方法是使用itertools中的函数:

>>> import itertools
>>> sum(itertools.takewhile(lambda x: x<5, range(10)))
10
导入itertools >>>sum(itertools.takewhile(λx:x>>l=[1,2,3,4,5,6,7,8,9] >>>x=5 >>>总和(itertools.takewhile(λi:i 如果您想一直到第5个元素,可以使用enumerate和zip:

>>> sum(zip(*(itertools.takewhile(lambda i: i[0]<x-1, enumerate(l))))[1])
10

>>sum(zip(*(itertools.takewhile(lambda i:i[0])如果要对前x个元素求和:

>>> l = [1,2,3,4,5,6,7,8,9]
>>> x = 5
>>> result = sum(l[:x])
>>> result
15

我的回答可能效率不高,但我认为它非常简单。

如果你是初学者,你应该了解执行任务的常用方法是定义函数

函数需要名称并且通常需要一个或多个参数,在本例中,
sum\u直到
是名称,
l
n
是参数

根据定义,有一些代码执行
l
n
的一般值的任务。最终,函数
return
s计算结果,这里是语句
return sum

请注意函数定义末尾注释的
#return sum
。您应该尝试控制在异常情况下要执行的操作,这里是在
l
中找不到
n
时我们要执行的操作。一个选项是返回
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))
输出
“before”是指
x
在列表中的位置吗?好的,我举了一个不好的例子,我会重写它,对不起。谢谢,这个答案对我来说最有意义,而且很有效:)不,不是。他想对前X个元素求和,包括X。看看他最后的例子。我错了。OP现在已经改变了他们的问题两次,并且不断改变他们想要的结果。没关系。但我希望我没有因此而被否决。
print(sum_until([2,4,6,8,5,10,12], 5))
print(sum_until([2,4,6,8,5,10,12], 3))
20
None