繁体   English   中英

在Pythonic while循环中执行迭代名称/变量的替代方法

[英]Alternate way to do Iterative name/variables in Pythonic while loop

所以我知道在迭代它时修改变量名是一种pythonic异端,但我一直在寻找一种好的pythonic方法来做到这一点并且可以解决它。 在统计编程(Stata,SAS)中,这样的代码很常见:

for x in 1/y:
gen a`x'=0

这会给你y变量,a1,a2,a3 .... ay都等于0。

我已经看到其他帖子说要做这样的事情你可以创建一个库并调用所有这些值,但是如果你有一个无限(有限)数值的话呢?

特别是在下面的例子中(这是执行简单行 - 梯形缩减的代码的开头),我想用ax创建迭代变量(参见倒数第二行),其中x等于0(所以a0)在第一次迭代,第二次迭代时为1(或a1),依此类推,一直到ax。

我没有看到用字典做这个的方法,因为我必须首先指定它中的条目数。 也许我在这里的理解是有缺陷的,但这就是我的想法。

def cmultadd(n, j, k, const):
    out = eye(n)
    out[j,k] = const
    return out  

def rowred(a):
    numrows = len(a)-1
    x=0
    while x<=numrows:
        ax=sp.dot(cmultadd(3,x,0,-ax[x+1,0]/ax[0,0]), a(x-1)); ax
        x=x+1

有人可以解释一个pythonic的方式来做我在这里用倒数第二行的ax变量做的事吗? 如果你能以一种有意义的方式解释它给出第一个例子(来自stata):)和(想象的)奖励积分:)

谢谢。

对于第一个例子,

 for x in 1/y: gen a`x'=0 

您可以使用列表推导生成(x)= 0,对于[0,y]中的x

a = [0 for x in range(y)]

或者调用函数或其他数学

a = [math.pow(x, 2) for x in range(y)]

第二个例子令人困惑, ax在定义之前被引用,而a被称为函数而不是像listsp.array那样被索引。

也许从rosetta代码看python中减少的行梯形式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM