for循环中的函数问题

0 python for-loop if-statement function list

def vol_tank(R,h):
    ht = R + 2.3*R

    if ht >= h:
        vol = 3.14 * R*R * h + 3.14 * R*R * h / 3
        print ('R: %.1f , h: %.1f - volume: %.2f' % (R,h,vol))
    elif R >= h:
        vol = 3.14 * R*R * h / 3
        print ('R: %.1f , h: %.1f - volume: %.2f' % (R,h,vol))
    else:
        print ('R: %.1f , h: %.1f - overflowing' % (R,h))

values = [[0.8, 1, 1.3, 1.5], [1, 1.25, 3.8, 4.5]]
table = [[vol_tank(R,h) for R in values[0]] for h in values[1]]
Run Code Online (Sandbox Code Playgroud)

- >表正在计算第一个"值"列表中的所有数字,其中包含第二个列表中的所有数字(例如:0.8表示1,0.8表示1.25,0.8表示3.8等等).

但我想要的只是他们各自的配对,如:0.8,11,1.55,1.3,3.8和1.5 4.5.

Bla*_*ack 5

您正在寻找zip()功能:

table = [vol_tank(R, h) for R, h in zip(*values)]
Run Code Online (Sandbox Code Playgroud)

并且您应该返回结果vol_tank()而不仅仅是打印,否则table将是一个充满None值的列表.