如何限制游标中的for循环迭代次数?

0 投票
3 回答
4038 浏览
提问于 2025-04-18 10:57

我正在使用一个 for 循环,配合 SearchCursor 来遍历一个特征类中的特征。

import arcpy

fc = r'C:\path\to\featureclass'

with arcpy.da.SearchCursor(fc, ["fieldA", "FieldB", "FieldC"]) as cursor:
    for row in cursor:
        # Do something...

现在我在调试这个脚本,需要找到一种方法,把循环的次数限制在5次,而不是现在的3500次。我知道限制 for 循环次数的最基本方法是这样的:

numbers = [1,2,3,4,5]

for i in numbers[0:2]
     print i

但是,这种方法在遍历游标对象时并不奏效。我可以用什么方法来限制在 with 语句中使用的游标对象的 for 循环的迭代次数呢?

3 个回答

0

一种可能的方法:

for index, row in enumerate(cursor):
  if index > x:
    # do something...
  else:
    # do something...
1

你可以用一种叫做列表推导的方法来获取所有的数据,然后只取你需要的前五行。下面是一个例子:

max = 5 #insert max number of iterations here
with arcpy.da.SearchCursor(fc, ["fieldA", "FieldB", "FieldC"]) as cursor:
    output = [list(row) for row in cursor][:max]

需要注意的是,每一行的数据都是一个元组,所以我们用list()这个方法把它们变成一个二维列表,这样你就可以根据需要使用它了。即使你的数据集有3500行,这个方法也能很快完成。希望这对你有帮助!

1

添加一个计数器和一个逻辑语句来限制循环的次数。比如说:

import arcpy

fc = r'C:\path\to\featureclass'

count = 1 # Start a counter

with arcpy.da.SearchCursor(fc, ["fieldA", "FieldB", "FieldC"]) as cursor:
    for row in cursor:
        # Do something...
        if count >= 2:
            print "Processing stopped because iterations >= 2"
            sys.exit()

        count += 1

撰写回答