繁体   English   中英

如何遍历嵌套循环并枚举

[英]How to loop through a nested loop and enumerate

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

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 但是,而是取回一个对象,其中包含与new_fields值对应的列值对应的 13 行数据。 我得到 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM