python - 高级 for 循环

标签 python list for-loop loops

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

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/

相关文章:

python - 我可以在 python3 中使 pprint 不拆分字符串,就像在 python2 中一样吗?

python - 如何在 Python 中打印粗体文本?

python - 尝试使用之前训练的 tf.keras 模型作为预训练,但得到“ValueError : Input 0 of layer dense_3 is incompatible with the laye

python - 字典条目都是一样的

python - 使用 numpy 来操作纯 python 列表

Python sorted() 函数无法正常工作

java - 可以对多维数组使用冒号 for 循环吗?

java - 是否可以循环遍历链接列表来检查特定链接内的 2 个属性(2 个字符串)?

php - 最佳实践是什么? - 调用 MySQL 存储函数的 PHP 循环正在影响服务器性能

php - For 循环递增时间 45 分钟