2015-04-30 31 views
-1

我試圖與蟒蛇的命令的文本,這是目前編碼:蟒蛇:如何檢查對象的值是否被包括在陣列

L=open('lp0.dat','w') 
L.write('Maximize') 
for i in range(ndof): 
    L.write(' '+str(-grad_f[i])) 
L.write('\n') 
for i in range(ndof): 
    if i==fix_index[i]: 
     L.write('s.t 0 =') 
     for j in range(ndof): 
      if j==i: 
       L.write(' 1') 
      else: 
       L.write(' 0') 
     L.write('\n') 
    elif i%2==0: 
     L.write('s.t 0.1 >=') 
     for j in range(ndof): 
      if j==i: 
       L.write(' 1') 
      else: 
       L.write(' 0') 
     L.write('\n') 
     L.write('s.t -0.1 <=') 
     for j in range(ndof): 
      if j==i: 
       L.write(' 1') 
      else: 
       L.write(' 0') 
     L.write('\n') 
    else: 
     L.write('s.t 0.15 >=') 
     for j in range(ndof): 
      if j==i: 
       L.write(' 1') 
      else: 
       L.write(' 0') 
     L.write('\n') 
     L.write('s.t -0.15 <=') 
     for j in range(ndof): 
      if j==1: 
       L.write(' 1') 
      else: 
       L.write(' 0') 
     L.write('\n') 
L.close() 

它應該寫2在每次迭代中具有不等號的線,但是如果索引i與數組的一個元素(fix_index)相同,它應該只寫一個等號的線。是的,我知道我做了這部分錯誤:

if i==fix_index[i]: 

因爲它顯示了Indexerror,自然。該陣列(fix_index)的形狀是這樣的:

fix_index=[0, 1, 2, 3, 4, 5, 28, 29, 30, 31] 

所以,我想的是,在迭代時索引i一樣的是這些數字之一,那麼它應該寫與=只有一條線,否則寫兩行與> =和< =。我試圖在迭代中檢查另一個小命令,但代碼變得太亂,甚至沒有意義。所以我需要一種方法來檢查數字是否與數組的元素相同。

+0

所以,你想要的'in'操作? '如果我在fix_index:'?如果不是,請進一步解釋。 – Kevin

+0

@凱文嗯,這很容易操作。謝謝,我可以使用相同的東西來處理任何類型的數組,比如2D或字符串數​​組嗎? –

回答

0

可以使用in操作

fix_index=[0, 1, 2, 3, 4, 5, 28, 29, 30, 31] 
if 28 in fix_index: 
    print("28 is in fix_index") 
+0

謝謝,我想我應該更多地瞭解他們的操作員 –