Python 计算每个给定数字列表的奇数和

Python 计算每个给定数字列表的奇数和,python,list,Python,List,如何确定所有奇数正整数的和,直到某个数arr[I]。如果查询是arr=[4,5],那么答案是arr[0]=4的1+3=4,以及arr[i]=5的1+3+5=9,arr[4,5]的 如果给定任意正数,此简单lambda将完成您的任务: sum\u奇数=lambda num:sum(xrange(1,num+1,2)) #例子 >>>lst=[4,5] >>>打印和奇数(lst[0]) # 4 >>>打印和奇数(lst[1]) # 9 我们可以制作一个简单的实现,使用范围(…)然后对其进行总结,如:

如何确定所有奇数正整数的和,直到某个数
arr[I]
。如果查询是
arr=[4,5]
,那么答案是
arr[0]=4
1+3=4
,以及
arr[i]=5
1+3+5=9
arr[4,5]的

如果给定任意正数,此简单lambda将完成您的任务:

sum\u奇数=lambda num:sum(xrange(1,num+1,2))
#例子
>>>lst=[4,5]
>>>打印和奇数(lst[0])
# 4
>>>打印和奇数(lst[1])
# 9

我们可以制作一个简单的实现,使用
范围(…)
然后对其进行总结,如:

def f(n):
    return sum(range(1, n+1, 2))

但是,如果我们考虑把数字加在一起,一个常数运算,则在O(n)中运行。< /P> 然而,这是一个错误。如果k是k=⌊(n-1)/2⌋, 那么这等于:

 k
---
\              (k+1) (2*k+2)        2
/    2*i + 1 = ------------- = (k+1)
---                 2            
i=0
因此,我们可以简单地计算如下:

def f(n):
    k1 = (n+1) // 2
    return k1 * k1
例如:

>>> f(4)  # 1 + 3
4
>>> f(5)  # 1 + 3 + 5
9
>>> f(10) # 1 + 3 + 5 + 7 + 9
25
>>> f(123456789)
3810394749276025

你尝试了什么?什么不起作用?请不要解决别人的家庭作业。它只会吸引更多低质量的问题。@WillemVanOnsem好吧,这是一个问答论坛。此外,我没有为他写一个完整的脚本,只有一行,因此这不是一个完整的解决方案。另外,编程新手可以从示例中学到很多东西。我发现它很有用,我刚刚了解了xrange。我必须在这里查找:(基本上是xrange,仅限python3,提供了一个迭代器而不是列表对象,因此它不太占用内存)。尽管如此,我明白威廉的观点——尽管在这种情况下,它对我来说效果很好。另外,我喜欢使用lamda,我可能只是写了一个函数。总而言之,这是一个优雅的解决方案。@markwell实际上,
xrange
在python 3中已经不存在了。相反,Python3通过在完整列表上使用迭代器来改进内存。因此,python 3中的
range
实际上就是python中的
xrange
2@Mark这里有一个参考: