#python #class #arguments
Вопрос:
Есть ли хороший способ сделать петлю чище? Могу ли я как-то сделать две петли ниже, чтобы они выглядели более чистыми и короткими? Есть ли другой способ определения всех параметров =0?
current = [] voltage = [] #parameters add shift value with every device loop m = 0 n = 0 t = 0 u = 0 w = 0 for device in range(0, rows*columns): m = shift_horizontal_per_device n = shift_vertical_per_device t = shif_param_a_per_device u = shif_param_b_per_device w = shif_param_c_per_device # parameters add shift value with every pad loop o = 0 l = 0 p = 0 r = 0 s = 0 for pad in range(0, pads): o = shift_horizontal_per_pad l = shift_vertical_per_pad p = shif_param_a_per_pad r = shif_param_b_per_pad s = shif_param_c_per_pad x = np.linspace(voltage_min,voltage_max,ids_per_pad) y = (lambda a,b,c,x: eval(math_fun))(a p t,b r u,c s w,x) x = o m y = n l voltage.extend(x) current.extend(y)
Комментарии:
1. Это выглядело бы намного чище, если бы вы использовали реальные имена переменных вместо букв
2. Я назначаю приращение значениям имен, это сделало бы код намного длиннее, если бы я изменил буквы с именами, поэтому не уверен в этом, похоже, что одежда vinze делает его намного лучше. m = shift_horizontal_per_device n = shift_vertical_per_device t = shif_param_a_per_device u = shif_param_b_per_device w = shif_param_c_per_device o = shift_horizontal_per_pad l = shift_vertical_per_pad p = shif_param_a_per_pad r = shif_param_b_per_pad s = shif_param_c_per_pad
3. Код уже чист, может быть, попробуйте использовать какие-то осмысленные имена и использовать комментарии, описывающие набор операций, они могут быть лучше. Вместо «m, t, u», если только эти значения не запоминаются, все в порядке.
Ответ №1:
Наименее запутанным способом, который я вижу, может быть:
current = [] voltage = [] m, n, t, u, w = 0, 0, 0, 0, 0 for device in range(0, rows*columns): m = shift_horizontal_per_device n = shift_vertical_per_device t = shif_param_a_per_device u = shif_param_b_per_device w = shif_param_c_per_device o, l, p, r, s = 0, 0, 0, 0, 0 for pad in range(0, pads): o = shift_horizontal_per_pad l = shift_vertical_per_pad p = shif_param_a_per_pad r = shif_param_b_per_pad s = shif_param_c_per_pad x = np.linspace(voltage_min,voltage_max,ids_per_pad) y = (lambda a,b,c,x: eval(math_fun))(a p t,b r u,c s w,x) x = o m y = n l voltage.extend(x) current.extend(y)