list.index()找不到现有元素

时间:2019-05-16 20:18:34

标签: python

我有一个嵌套的二进制值(0,1)的整数列表。

我知道我们不能递归地进入多维列表来查找元素,所以我放了一个循环以获取单个列表。

然后调用list.index(0)会找到正确的索引0,但是当我调用list.index(1)时会返回值错误。我主要是在寻找解释而不是解决方案。

代码:

def getA(a):
    b = 0
    m = [] 
    for j in range(a):
        b = b+j
    for x in range(b+1):
        m.append(getR(x))
    for z in m:
        print(z.index(1))  # Throws ValueError: 1 is not in list

但是打印z:

 [0, 0, 0, 0, 0]
 [0, 0, 0, 1, 1]
 [0, 0, 1, 0, 1]
 [0, 0, 1, 1, 0]
 [0, 1, 0, 0, 1]
 [0, 1, 0, 1, 0]
 [0, 1, 1, 0, 0]
 [1, 0, 0, 0, 1]
 [1, 0, 0, 1, 0]
 [1, 0, 1, 0, 0]
 [1, 1, 0, 0, 0]

并最终打印z.index(0):

 0
 0
 0
 0
 0
 0
 0
 1
 1
 1
 2

2 个答案:

答案 0 :(得分:2)

list.index(1)返回一个值错误,因为您的第一个列表([0,0,0,0,0])中没有'1'。如果尝试使用list.index(2)

,将会看到类似的响应。

答案 1 :(得分:1)

这就是方法index的工作方式。如果未在列表中找到值,则会引发异常Value Error

由于每个列表都包含0,因此可以正常工作并返回每个列表中0的第一个索引。

但是例如,第一个列表不包含1,这就是为什么它引发异常的原因。

您可以将1添加到第一个列表中,然后看到不再引发异常。