并非所有行都被添加到SearchCursor中的列表中

时间:2019-03-21 19:40:14

标签: python list arcpy

with arcpy.da.SearchCursor(fc, ["LAT", "LON"]) as cursor:
    for row in cursor:
        print("Print rows: {} ".format(row)
        xy_list = [(row[0],row[1]) for row in cursor]

print("Print list: {} ".format(xy_list))

输出:

Print rows: (44.8175669441669, -63.6431023726842) 
Print list: [(44.8175486319183, -63.6432418986223), (44.8170733108224, -63.644658488894)] 

我正在提取纬度的要素类,从SearchCursor中添加到列表的Long具有三个属性。我不明白为什么没有全部添加三个坐标。

注意:我打印的坐标“打印行:(44.8175669441669,-63.6431023726842)”不在列表中。

2 个答案:

答案 0 :(得分:0)

您在一次for循环中消耗了“游标”可迭代次数,然后又在一次for list内部使用了列表理解(第二次和第三次)。

看来您最终想要的是 xy_list = list(光标)

不?

答案 1 :(得分:0)

每行都是一个列表,如果要创建行列表(或矩阵或二维向量),则应将此行作为列表追加到xy_list中:

import arcpy

fc = r'C:\Teste\Teste.gdb\Test_Coord'

xy_list = []

with arcpy.da.SearchCursor(fc, ["LAT", "LON"]) as cursor:
    for row in cursor:
        print row
        xy_list.append(list(row))

print("Print list: {} ".format(xy_list))