如何限制游标中的for循环迭代次数?
我正在使用一个 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