从for循环中的列表访问内容?

时间:2018-07-06 11:48:56

标签: python loops

我想不出解决方案:

我有此列表:shapefiles

我想为列表中的每个shapefile创建一个进程,但问题是它是列表的列表:

for i in shapefiles:
    inte_s = gpd.read_file(i) #Apparently it is wrong to just use i.
    etc..

如何让它一次访问列表中的每个人?

要了解列表的清单,请检查这些测试。

shapefiles[0]
['C:\\Users\\user\\Desktop\\fffff\\INTE_PST_NO_EK_WITH_ASTTOM\\INTE_SHP_TESTA\\INTE1.shp',
 'C:\\Users\\user\\Desktop\\fffff\\INTE_PST_NO_EK_WITH_ASTTOM\\INTE_SHP_TESTB\\INTE1.shp']

for i in shapefiles:
    print(i)
['C:\\Users\\user\\Desktop\\fffff\\INTE_PST_NO_EK_WITH_ASTTOM\\INTE_SHP_TESTA\\INTE1.shp', 
'C:\\Users\\user\\Desktop\\fffff\\INTE_PST_NO_EK_WITH_ASTTOM\\INTE_SHP_TESTB\\INTE1.shp']

for i in shapefiles:
    print(i[0])
C:\Users\user\Desktop\fffff\INTE_PST_NO_EK_WITH_ASTTOM\INTE_SHP_TESTA\INTE1.shp

for i in shapefiles:
    print(i[1])
C:\Users\user\Desktop\fffff\INTE_PST_NO_EK_WITH_ASTTOM\INTE_SHP_TESTB\INTE1.shp

2 个答案:

答案 0 :(得分:6)

您有一个列表列表,因此请先将其展平,然后使用循环

shapefiles_flat = [file_ for sublist in shapefiles for file_ in sublist]

for i in shapefiles_flat:
      #read

答案 1 :(得分:2)

似乎您在这里有一个列表列表。 shapefiles的每个元素本身就是两个文件名的列表。因此,我建议仅嵌套两个循环:

for i in shapefiles:
    for j in i:
        inte_s = gpd.read_file(j)
        # etc...