我正在尝试将一个向量提供给一个函数,该函数检查每个元素并将列表中的相应元素分配给正确的if语句。
输出应如下所示:
10 11 17 40 370
不知怎的,我只收到第一个元素
370
并且循环正在分解。代码如下所示:
def dosomething(thelist):
period_unit = []
for period in thelist:
period = period.lower()
if period[-1:] == "d":
period_unit = 1
elif period[-1:] == "m":
period_unit = 30
elif period[-1:] == "w":
period_unit = 7
elif period[-1:] == "y":
period_unit = 360
elif period == "dummy":
period_object = 0
return period_object
else:
raise Exception("Something went wrong")
period_object = 10 + period_unit
return period_object
if __name__ == '__main__':
date = ["dummy", "1d", "1W", "1M", "1Y"]
test = dosomething(date )
print(test)
答案 0 :(得分:4)
您每次都会重新分配period_unit
。
你想做类似的事情:
def dosomething(thelist):
period_unit = []
for period in thelist:
period = period.lower()
curr_period_unit = None
if period == "dummy":
curr_period_unit = 0
elif period[-1] == "d":
curr_period_unit = 1
elif period[-1] == "m":
curr_period_unit = 30
elif period[-1] == "w":
curr_period_unit = 7
elif period[-1] == "y":
curr_period_unit = 360
else:
raise Exception("Something went wrong")
period_unit.append(10 + curr_period_unit)
return period_unit
然后它按预期工作:
>>> date = ["dummy", "1d", "1W", "1M", "1Y"]
>>> dosomething(date)
[10, 11, 17, 40, 370]
>>> ' '.join(str(item) for item in dosomething(date))
'10 11 17 40 370'