我是地理空间编码的新手。我有两个列表,每个列表包含3个字符串项。我正在使用arcpy剪辑功能,需要使用for函数将列表1中的项目剪切为列表2中的项目。我无法弄清楚如何在列表一和列表二中调用变量,然后迭代该函数以调用下一个变量。
我曾尝试根据for语句中创建的变量为列表定义新变量。
lst1= ['boulder_OpenSpace.shp', 'lafayette_OpenSpace.shp', 'louisville_OpenSpace.shp']
lst2= ['sites53242bldBuff_3000.shp', 'sites430183lafBuff_3000.shp', 'sites329231louBuff_3000.shp']
for a in [range(len(lst1))]:
town= lst1(a)
buff= lst2(a)
arcpy.Clip_analysis(town, buff, 'focused'+a)
print(a, 'clipped to buffered sites')
我希望函数在列表1中选择一个项目并将其剪辑到列表2中的每个项目,然后移至列表1中的第二个项目以再次剪辑在列表2中的每个项目。我知道我不是用这种方法可以解决问题,但是在弄清楚从哪里开始时遇到了麻烦。
答案 0 :(得分:0)
听起来像您想要的是list1中每个城镇的内容,您想要将其裁剪到list2中的每个增益值。这可以通过嵌套循环或使用itertools
库中的函数来完成。
lst1= ['boulder_OpenSpace.shp', 'lafayette_OpenSpace.shp', 'louisville_OpenSpace.shp']
lst2= ['sites53242bldBuff_3000.shp', 'sites430183lafBuff_3000.shp', 'sites329231louBuff_3000.shp']
for t,town in enumerate(lst1):
for b,buff in enumerate(lst2):
output = "focused_{}_{}.shp".format(t,b)
arcpy.Clip_analysis(town, buff, output)
print("{} clipped to {}'.format(town, buff)
itertools.product()
import itertools
lst1= ['boulder_OpenSpace.shp', 'lafayette_OpenSpace.shp', 'louisville_OpenSpace.shp']
lst2= ['sites53242bldBuff_3000.shp', 'sites430183lafBuff_3000.shp', 'sites329231louBuff_3000.shp']
for i,(town, buff) in enumerate(itertools.procduct(lst1, lst2)):
output = "focused_{}.shp".format(i)
arcpy.Clip_analysis(town, buff, output)
print("{} clipped to {}'.format(town, buff)