我正在python中运行线性回归模型。我的代码的一部分使用下面引用的代码。我大约有30次迭代;每个代表源文件中的自变量或列。
我正在尝试缩短它,以便合并我的代码。有谁知道如何在循环中运行这种事情?
可以将“ ABC”,“ DEF”,“ GHI”放入某种列表中(在我的代码中会有更多的列表),然后在该列表中循环。否则那将是理想的。
xlist = []; xlist2 = []
###################################################
if x1.value == False:
pass
else:
x1 = 'ABC'
xlist.append(x1)
xlist2.append(x1)
###################################################
if x2.value == False:
pass
else:
x2 = 'DEF'
xlist.append(x2)
xlist2.append(x2)
###################################################
if x3.value == False:
pass
else:
x3 = 'GHI'
xlist.append(x3)
xlist2.append(x3)
###################################################
答案 0 :(得分:1)
假设x1,x2和x3已经存在(如问题中所示):
xlist1 = []
xlist2 = []
items = [(x1, 'ABC'), (x2, 'DEF'), (x3, 'GHI')]
for x, val in items:
if x.value:
xlist1.append(val)
xlist2.append(val)
关键是要以某种方式关联值x1
和'ABC'
; x2
和'DEF'
;以及x3
和'GHI'
。
答案 1 :(得分:0)
根据设置,您可以执行以下操作:
xvalues={'x2': 'DEF'}
values = ['ABC' ,'DEF', 'GHI' ]
items = ['x1', 'x2', 'x3' ]
for x in items:
if xvalues.get(x) == None:
xvalues.update({x: values.pop()})
else:
values.pop()
In [214]: xvalues
Out[214]: {'x2': 'DEF', 'x1': 'GHI', 'x3': 'ABC'}
如果您可以将数据格式添加到您的问题中,我可以更新此答案,但我希望这会有所帮助
或者仅插入带有值的值,可以使用以下方法:
xinsert = []
xinsert2 = []
def makereduce(agg, rval):
if agg[1][rval]:
xinsert.append(rval)
xinsert2.append(rval)
return('',values)
values={'x1': 'ABC', 'x2': 'DEF', 'x3': 'GHI', 'x4': None}
reduce(makereduce, values, ('',values))
In [413]: xinsert
Out[413]: ['x1', 'x2', 'x3']