python:如何检查对象的值是否包含在数组中

时间:2015-04-30 15:03:43

标签: python arrays

我正在尝试使用python创建一个用于命令的文本,目前已编码:

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与其中一个数字相同时,它应该只写一行=,否则用&gt; =和&lt; =写两行。我尝试在迭代中使用另一个小的for命令进行检查,但代码变得太乱,甚至没有意义。所以我需要一种方法来检查数字是否与数组元素相同。

1 个答案:

答案 0 :(得分: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")