如何使用具有不同范围的另一个列表的元素循环和更改列表的元素?

时间:2011-06-29 19:37:59

标签: python

这第一行有效,我得到V(i)= V + QIN(i)-QOUT(i),但当我尝试做的时候   T(i)=(T + C(i)+ TIN(i)* QIN(i))/((C(i)+ QIN(i)),我怎样才能循环每个C [i],

QOUT=[1.0, 3.0, 1.0, 2.0]
QIN=[2.0, 3.0, 5.0, 2.0]
TIN=[10.0,12.0,13.0, 12.0]

V=[2.0, 4.0, 5.0]

T=[10.0, 11.0, 12.0]

#4 iterations

#V(i) = V+QIN(i)-QOUT(i)

lineNum=0 
for line in range(len(QIN)):
    C = []
    for i in range(len(V)):
        C.append(V[i]+QIN[line]-QOUT[lineNum])     
    lineNum +=1

    print C 

    lineNum=0         
        for t1 in range(len(TIN)):
        Tx=[]
            for c in range(len(C)): 
                for i in range(len(T)):   
                    Tx.append((T[i]*C[c]+TIN[t1]*QIN[lineNum])/(C[c]+QIN[lineNum]))
            lineNum +=1

            print Tx

2 个答案:

答案 0 :(得分:1)

抱歉无法发布图片。 缩进问题在第19,21,23,25,29行 - 在任何编辑器中切换特殊字符,您将看到它们。 但问题的真正原因在于重用numlines变量,因此它会引发IndexError。 可能的解决方案:

QOUT=[1.0, 3.0, 1.0, 2.0]
QIN=[2.0, 3.0, 5.0, 2.0]
TIN=[10.0,12.0,13.0, 12.0]

V=[2.0, 4.0, 5.0]

T=[10.0, 11.0, 12.0]

for q_in, q_out in zip(QIN, QOUT):
    C = [v + q_in - q_out for v in V]    
    print C

    lineNum=0         
    for t1 in range(len(TIN)):
        Tx=[]
        for c in range(len(C)): 
            for i in range(len(T)):   
                Tx.append((T[i]*C[c]+TIN[t1]*QIN[lineNum])/(C[c]+QIN[lineNum]))
        lineNum +=1
        print Tx

我认为你真的打算在这种背景下使用亚麻布......

PS:范围内的t1(len(TIN)):......部分需要展开,但我现在没有这个精神

答案 1 :(得分:0)

也许是这样的:

QOUT=[1.0, 3.0, 1.0, 2.0]
QIN=[2.0, 3.0, 5.0, 2.0]
TIN=[10.0,12.0,13.0, 12.0]

V=[2.0, 4.0, 5.0]

T=[10.0, 11.0, 12.0]

#4 iterations

#V(i) = V+QIN(i)-QOUT(i)

for i in range(len(QIN)):
    C = []
    for v in V:
        C.append(v + QIN[i] - QOUT[i])
    print C

lineNum = 0

for t1 in TIN:
    Tx = []
    for c in C:
        for t in T:
            Tx.append((t * c + t1 * QIN[lineNum]) / (c + QIN[lineNum]))
    lineNum += 1

    print Tx

如果将lineNum设置为0,则在循环

中的代码中递增它
lineNum=0 
for line in range(len(QIN)):
    C = []
    for i in range(len(V)):
        C.append(V[i]+QIN[line]-QOUT[lineNum])     
    lineNum +=1

    print C 

    lineNum=0  #here

我猜你不想嵌套这些循环:

for t1 in TIN:
Tx = []
for c in C:
    for t in T:

在第一个。