首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python求和

Python求和
EN

Stack Overflow用户
提问于 2018-06-26 02:36:53
回答 2查看 217关注 0票数 2

我是一个非常新的python用户。

我在试着计算一个求和级数。

Equation

我有一个表,其中包含带有p = 10a_(ij)的值(见下文)。

代码语言:javascript
复制
data = [["a_{ij}", "j=0", "j=1", "j=2", "j=3"],
["i=1", 4.3, 8.3, 2.9, `1.3],
["i=2", 1.4, 4.7, 6,5, 3.2]]

代码语言:javascript
复制
a_(ij)  j = 0  j = 1  j = 2  j = 3
i = 1    4.3    8.3    2.9     1.3
i = 2    1.4    4.7    6.5     3.2
.
.
i = 20   8.34   2.13  7.93   6.322

而不是为每个y值单独编写代码。

代码语言:javascript
复制
# For i = 1
y_1 = 4.3*10**0 + 8.3*10**1 + 2.9*10**2 + 1.3*10**3

有没有更简单的方法来节省时间?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-26 03:51:19

这里有一个干净的解决方案:

代码语言:javascript
复制
>>> a = [
...     [4.3, 8.3, 2.9, 1.3],
...     [1.4, 4.7, 6,5, 3.2]
... ]
>>> p = 10.0
>>> import operator
>>> [sum(map(operator.mul, i, map(p.__pow__, range(len(i))))) for i in a]
[1677.3, 37648.4]

如果您使用的是Python2.7,请将zip替换为izip并从itertools导入izip

下面是您发布的手动计算的结果,以供比较:

代码语言:javascript
复制
>>> 4.3*10**0 + 8.3*10**1 + 2.9*10**2 + 1.3*10**3
1677.3
票数 0
EN

Stack Overflow用户

发布于 2018-06-26 03:02:10

将a_(ij)存储为矩阵。或者将其设置为2D数组,或者使用numpy库并将其设置为numpy矩阵。

二维数组示例:

代码语言:javascript
复制
a = [[4.3, 8.3, 2.9, 1.3],
     [1.4, 4.7, 6.5, 3.2],
     # you've indicated more lines will go here
     [8.34, 2.13, 7.93, 6.322]]

如果a可以由函数生成,我建议您以这种方式生成2D数组,而不是手动输入值。

然后,您可以将您的公式实现为函数:

代码语言:javascript
复制
def y(i):
    p = 10
    total = 0
    for j in range(1,4):
        total += a[i][j] * p**j
    return total

现在,您可以通过调用函数来获得任意i的y值,例如,对于i=1,y(1)将给出y的值。

您还可以为y生成一个数组(如果您经常重用相同的y值,那么如果您将其缓存在一个数组中,而不是每次都重新计算y,那么您的代码将运行得更快)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51029920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档