python - 如何遍历嵌套循环并枚举

标签 python list loops if-statement nested-loops

我的嵌套循环有问题。我得到了一个输出,但它复制了数据集中字段数量的每个输出。

for dat in data_body:
    x = float(dat[5])
    y = float(dat[6])
    point = ogr.Geometry(ogr.wkbPoint)
    point.AddPoint(x,y)
    feature.SetGeometry(point)
    for i, d in enumerate(dat):
        for j, field in enumerate(new_fields):
            if i == j:
                feature.SetField(field, d)
                layer.CreateFeature(feature)

对于我的数据集,列表列表 data_body 有 13 行数据和 55 列(即 55 个位置)。对于我的列表 new_fields,我有 55 个值,它们对应于列表的 data_body 列表的列。因此,在对象 feature.SetField(field, d) 的代码块中。我应该让 data_body 的每个值对应于每个唯一字段,只要行彼此匹配,即 ij。但是,而是返回一个包含 13 行数据的对象,这些数据与 new_fields 中的值对应的列值相对应。我得到 13 * 55 个值,即 715 行,其中约 50% 的数据缺少值。我的输出数据表看起来像一个数据三角形。

我不确定我的问题是否有意义,但如果有的话,对我的嵌套循环策略的任何帮助都会有所帮助。我认为我的问题是我对循环实际执行的操作以及我的 if 语句可能执行的操作的概念化。

最佳答案

正如avasal所说,你想同时迭代dat和new_fields,最简单的方法是使用zip:

for d, field in zip(dat, new_fields):
    feature.SetField(field, d)
    layer.CreateFeature(feature)

关于python - 如何遍历嵌套循环并枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13467147/

相关文章:

python - 在 Python 中构建 Gtk3 应用程序的正确方法

python - 为道路修建十字路口时出错

python - Lua脚本不会执行python脚本

javascript - 在元素前追加 li

loops - 操作 Lua 表时遇到问题

php - 如何遍历包含从 MySQL 返回的数据的 PHP 数组?

python - 高斯消元法 - 在 python 中使用切片进行旋转

c# - linq 任何不等于 (!=) 的运算符

r - 有没有更有效的方法在列表中用 NA 替换 NULL?

bash - bash 脚本中的进程控制