首页 > 解决方案 > 同时更改两个 Python 列表的索引

问题描述

我正在使用 python 3,并且有两个由它们的索引相关的列表,但有不同的值。

scans = [400,405]
points = [101,201]

因此,例如,扫描 400 有 101 个点,而扫描 405 有 201 个点。

我正在尝试为每个扫描构建一组文件名(即字符串),如下所示:

2idd_flyXMAP_0400_0.nc
2idd_flyXMAP_0400_1.nc
2idd_flyXMAP_0400_2.nc
...
2idd_flyXMAP_0400_98.nc
2idd_flyXMAP_0400_99.nc
2idd_flyXMAP_0400_100.nc

2idd_flyXMAP_0405_0.nc
2idd_flyXMAP_0405_1.nc
2idd_flyXMAP_0405_2.nc
...
2idd_flyXMAP_0405_199.nc
2idd_flyXMAP_0405_200.nc

请注意,扫描 405 将有更多文件与之关联。我接近了下面的代码,但是嵌套 for 循环的性质让我迭代了太多次,并生成了不需要的字符串(即一组包含 200 个点的扫描 400 和一组包含 100 个点的扫描 405,两者是不必要的)。

scans = [400,405]
points = [101,201]

for scan in scans:
    pre_f = '2idd_flyXMAP_0' + str(scan) + '_'
    for point in points:
      endfile = list(range(point))  #this seems to be where the problem is; i generate four sets of lists here because i have two elements in two lists
      for point in endfile:
          f = pre_f  + str(point) + '.nc'
          print(f)

我可能设置不准确,但在这种情况下我想做的是在第一个for 循环完成后更改scanfor 循环和第一个pointfor 循环的索引。point我不确定如何做到这一点,但我认为这应该可以解决我的问题。

当然,我愿意接受单独的、更简单的方法,并提前感谢您的帮助!

标签: pythonindexing

解决方案


你也可以使用枚举

for index, scan in enumerate(scans)
    for point in range(points[index])
        output = "{i}: {s}-{p}".format(i=index, s=scan, p=point)
        print(output)

推荐阅读