python if语句检查列的值并执行命令

时间:2015-02-21 04:11:53

标签: python arrays if-statement append tuples

for z in range(0,countD.shape[0]):
    if countD[z,0] in background_low1[:,0]:
        background_lowCountD.append(countD[z,:])
    else:
        background_goodCountD.append(countD[z,:])  

我正在使用上面的代码并获得“列表索引必须是整数,而不是元组”错误消息。我有两个不均匀的数组(CountD和background_low1),如果在任何行级别的两个数组的第0列中都存在一个值,我想将该行移动到一个新数组,如果它只存在于1中,我希望该行移动到第二个新阵列。

1 个答案:

答案 0 :(得分:0)

您收到此错误消息,因为列表是一维的(理论上)。但由于列表可以包含另一个列表,因此您可以创建一个多维列表。现在,使用括号之间的索引(必须是整数)来访问列表的元素。处理多维列表时,只需一个接一个地使用多个括号:

>>> a = ['a','b','c']
>>> b = [1,2,a]
>>> print b[2]
>>> ['a','b','c']
>>> print b[2][0]
>>> 'a'

所以,回答你的问题,尝试这样的事情:

list1 = [[1,2,3,4],
         [5,6,7,8],
         [9,10,11,12]]
list2 = [[1,4,5,6],
         [7,6,7,8],
         [9,1,2,3]]

newList = []
otherList = []

#you need to make sure both lists are the same size
if len(list1) == len(list2):
    for i in range(len(list1)):
        if list1[i][0] == list2[i][0]:
            newList.append(list1[i])
        else:
            otherList.append(list1[i])

#the lists should now look like this
>>> print newList
>>> [[1,2,3,4],[9,10,11,12]]
>>> print otherList
>>> [[5,6,7,8]]