如何将第一个列表中的要素剪切到第二个列表中的要素?

时间:2019-08-27 03:21:41

标签: python-2.7 for-loop arcpy

我是地理空间编码的新手。我有两个列表,每个列表包含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中的每个项目。我知道我不是用这种方法可以解决问题,但是在弄清楚从哪里开始时遇到了麻烦。

1 个答案:

答案 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)