Как сделать циклы короче, чище при использовании многих переменных?

#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)