我有一个嵌套的二进制值(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
答案 0 :(得分:2)
list.index(1)返回一个值错误,因为您的第一个列表([0,0,0,0,0])中没有'1'。如果尝试使用list.index(2)
,将会看到类似的响应。答案 1 :(得分:1)
这就是方法index
的工作方式。如果未在列表中找到值,则会引发异常Value Error
。
由于每个列表都包含0
,因此可以正常工作并返回每个列表中0
的第一个索引。
但是例如,第一个列表不包含1
,这就是为什么它引发异常的原因。
您可以将1
添加到第一个列表中,然后看到不再引发异常。