首页 > 解决方案 > 当使用许多变量时,如何使循环更短、更清晰?

问题描述

有没有一种让循环看起来更干净的好方法?我可以以某种方式在下面制作两个循环以看起来更干净,更短吗?是否有不同的方法来定义所有参数 = 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)

标签: pythonclassarguments

解决方案


我看到的最不复杂的方式可能是:

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)

推荐阅读