我在停止Python中的迭代时遇到了一些问题。此问题出现在函数中:
for z in range(w.steps):
for i in range(1,w.x-1):
for j in range(1,w.y-1):
print (i, j)
for r in data.c:
if w.world[i][j] in r:
print r
ind = data.c.index(r)
print ind
if w.world[i-1][j] in data.n[ind]:
if w.world[i][j+1] in data.e[ind]:
if w.world[i+1][j] in data.s[ind]:
if w.world[i][j-1] in data.w[ind]:
w.world[i][j] = data.cc[ind]
步骤数(第一个for
循环)由用户提供。接下来的两个for
循环用于遍历二维数组(x
-行,y
-列):
for i in range(1,w.x-1):
for j in range(1,w.y-1):
(打印仅用于控制) 对于数组中的每个单元格,我要检查其值。我在data.c列表中有所有可能的值(比如说value=14),看起来是这样的:
li = [[2],[14,23],[4]]
所以指令是:
for r in data.c:
if w.world[i][j] in r:
我想在第一个true
出现时停止迭代。如果函数的第一个值是相等的,我想指定包含它的列表的索引,并执行其他语句:
ind = data.c.index(r)
if w.world[i-1][j] in data.n[ind]:
if w.world[i][j+1] in data.e[ind]:
if w.world[i+1][j] in data.s[ind]:
if w.world[i][j-1] in data.w[ind]:
w.world[i][j] = data.cc[ind]
如果它们都是true
,我想执行最后一条指令(赋值),并从数组转到下一个单元格。但如果其中至少有一个是false
,我想回去,在data.c
列表中寻找下一个目标(可能不止一个)。列表中肯定有各种可能性的值。关键是先用哪个匹配。
我在1个单元格中尝试了这个函数,得到的索引比预期的多得多,我不知道为什么。从数组中输出一个单元格,并带有我的注释,这是什么:
(1, 1) # print(i,j)
[0] # print r
3 # print data.c.index(r)
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
[0]
3
我将非常感谢任何帮助,因为我处理这个算法很长时间了(我是一个编程初学者)。
如果我理解正确,您需要放置一个
break
语句。相关问题 更多 >
编程相关推荐