gpt4 book ai didi

python - 高级 for 循环

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:29 33 4
gpt4 key购买 nike

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

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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com