我有一个列表列表的列表(最后一个列表并不重要)
data = [[[['f', 0], 'C'], [['X', 0], 'X']],
[[['s', 1], 'X'], [['X', 0], 'X']]]
它本质上是一张有 4 个象限的 map 。目前我正在遍历它并用
更新它for i in data:
for x in i:
if x[0][0] == 'f':
x[0][1] += 1
但我想检查一个单元格的邻居。有没有办法做到这一点,当以此迭代时,还是我必须决定使用整数键在列表中移动?
最佳答案
是的,除非你写了一些更复杂的东西,允许你遍历元素,也给你他们的邻居,否则你将不得不使用元素的绝对寻址。
如果您确定总是使用列表的列表(即不仅仅是一些其他可迭代对象),您当然可以使用 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
关于python - 高级 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15302386/