是的,除非您编写更复杂的东西以允许您迭代也为您提供邻居的元素,否则您将不得不使用元素的绝对寻址。
如果您确定总是使用列表列表(即不仅仅是其他一些可迭代的),您当然可以使用enumerate
来快速获取索引和元素本身:
for i, row in enumerate(data):
for j, cell in enumerate(row):
# now you can access data[i][j-1], data[i+1][j] etc
所以,我首先提到了“更复杂”的事情,你可以做的是制作一个生成器,它会自动迭代单元格并返回其他数据,例如左邻居或其他数据。
def myLeftNeighborGenerator(data):
for i, row in enumerate(data):
for j, cell in enumerate(row):
leftNeighbor = data[i][j-1] if j > 0 else None
yield cell, leftNeighbor
然后您可以使用该生成器神奇地获取您的数据:
for x, left in myLeftNeighborGenerator(data):
if x[0][0] == 'f':
x[0][1] += 1
if left is not None:
# whatever