簡體   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