14

我是 Python 的初学者,对于那些对我的帖子持负面看法的人,请离开。我只是在这里寻求帮助并尝试学习。我试图在一个简单的数据集中检查 0 和 1。这将用于定义平面图上的空隙和实体,以定义建筑物中的区域……最终,0 和 1 将与坐标交换。

我收到此错误:ValueError: [0, 3] is not in list

我只是检查一个列表是否包含在另一个列表中。

currentPosition's value is  [0, 3]
subset, [[0, 3], [0, 4], [0, 5], [1, 3], [1, 4], [1, 5], [2, 1], [3, 1], [3, 4], [3, 5], [3, 6], [3, 7]]

这是代码片段:

def addRelationship(locale, subset):
    subset = []; subSetCount = 0
    for rowCount in range(0, len(locale)):
        for columnCount in range (0, int(len(locale[rowCount])-1)):
            height = len(locale)
            width = int(len(locale[rowCount]))
            currentPosition = [rowCount, columnCount]
            currentVal = locale[rowCount][columnCount]
            print "Current position is:" , currentPosition, "=", currentVal

            if (currentVal==0 and subset.index(currentPosition)):
                subset.append([rowCount,columnCount])
                posToCheck = [rowCount, columnCount]
                print "*********************************************Val 0 detected, sending coordinate to check : ", posToCheck

                newPosForward = checkForward(posToCheck)
                newPosBackward = checkBackward(posToCheck)
                newPosUp = checkUpRow(posToCheck)
                newPosDown = checkDwnRow(posToCheck)

我正在使用 subset.index(currentPosition) 来检查 [0,3] 是否在子集中,但得到 [0,3] 不在列表中。怎么会?

4

4 回答 4

26

让我们展示一些抛出相同错误的等效代码。

a = [[1,2],[3,4]]
b = [[2,3],[4,5]]

# Works correctly, returns 0
a.index([1,2])

# Throws error because list does not contain it
b.index([1,2])

如果您只需要知道列表中是否包含某些内容,请使用这样的关键字in

if [1,2] in a:
    pass

或者,如果您需要确切的位置但不知道列表是否包含它,您可以捕获错误,这样您的程序就不会崩溃。

index = None

try:
    index = b.index([0,3])
except ValueError:
    print("List does not contain value")
于 2012-08-23T17:34:03.877 回答
1

subset.index(currentPosition)评估False何时currentPosition在 的索引 0 处subset,因此if在这种情况下您的条件失败。你想要的可能是:

...
if currentVal == 0 and currentPosition in subset:
...
于 2012-08-23T17:32:34.440 回答
1

为什么要把事情复杂化

a = [[1,2],[3,4]]
val1 = [3,4]
val2 = [2,5]

检查这个

a.index(val1) if val1 in a else -1
a.index(val2) if val2 in a else -1
于 2017-05-27T06:06:48.637 回答
0

我发现

list = [1,2,3]

for item in range(len(list)):
    print(item)

不起作用,因为它从 0 开始,所以你需要写

for item in range(1, len(list)):
    print(item)
于 2020-12-11T16:28:56.073 回答