我想遍历具有变量名的列表,以便将这些变量用作函数的输入。我认为,更清楚的是,何时提供代码。
data_low_wind= data.loc[data['Windspeed']<=10]
...#(high_wind and W,S,E have similar characteristic and not important for the problem)
data_N = data.loc[(data['WindDirection'] > 315) & (data['WindDirection'] <= 45)]
...
weather_condition = ['low_wind','high_wind','N','W','S','E']
for i in weather_condition:
if len(data_i) != 0:
Errormeasure_i=table_Errormeasure(data_i,park_size)
该代码尚无法使用,因为weather_condition
的值被读取为字符串,因此无法识别为data_
命令的附加值。
我的目标是for循环产生以下结果:
if len(data_low_wind)!=0:
Errormeasure_low_wind=table_Errormeasure(data_low_wind,park_size)
#(and for the other elements of the list accordingly)
这通常是一个好的(可接受的)方法吗?我读到,通常不希望通过for循环更改变量名称。
我使用的另一种方法是使用map(lambda...)
,但是这也没有产生期望的结果。
weather_condition = ['low_wind','high_wind','N','W','S','E']
data= map(lambda x: 'data_'+x,weather_condition)
print(data)
[output] <map object at 0x00000180929D2860>
感谢您对我的问题的帮助和澄清。 (我希望这个问题不会重复很多。其他问题不能解决我的问题)
答案 0 :(得分:2)
您应该使用字典。
wind_data = {
'low_wind': data.loc[data['Windspeed']<=10],
'N': data.loc[(data['WindDirection'] > 315) & (data['WindDirection'] <= 45)],
...
}
error_measures = {}
for key, value in wind_data.items():
if len(value) != 0:
error_measures[key] = table_Errormeasure(value, park_size)