Skip to main content
 首页 » 编程设计

python之高级 for 循环

2025年05月04日16lori

我有一个列表列表的列表(最后一个列表并不重要)

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