我是Python的初学者,对于那些对我的帖子抱有负面想法的人,请离开。我只是在这里寻求帮助并努力学习。我试图在一个简单的数据集中检查0和1。这将用于定义楼层平面上的空隙和实体,以定义建筑物中的区域...最终0和1将与坐标交换。
我收到此错误:ValueError:[0,3]不在列表中
我只是检查另一个列表中是否包含一个列表。
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]不在列表中。怎么样?
答案 0 :(得分:14)
让我们展示一些引发相同错误的等效代码。
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")
答案 1 :(得分:1)
subset.index(currentPosition)
位于False
的索引0时, currentPosition
会对subset
进行评估,因此在这种情况下您的if
条件会失败。你想要的可能是:
...
if currentVal == 0 and currentPosition in subset:
...
答案 2 :(得分: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
答案 3 :(得分:0)
我发现了
list = [1,2,3]
for item in range(len(list)):
print(item)
因为它从0开始所以不起作用,所以您需要写
for item in range(1, len(list)):
print(item)