同时更改两个Python列表的索引

时间:2018-09-11 14:55:52

标签: python indexing

我正在使用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包含200点,一组扫描405包含100点,两者不必要)。

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)

我可能对此设置不正确,但是在这种情况下,我想做的是将scan for循环和第一个point for循环的索引都更改为第一个{ {1}} for循环完成。我不确定如何完成此操作,但是我认为这应该可以解决我的问题。

当然,我愿意采用单独的,更简单的方法,并预先感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您可以使用zip

scans = [400, 405]
points = [5, 6]

for scan, point in zip(scans, points):
    pre_f = '2idd_flyXMAP_0' + str(scan) + '_'
    for p in range(point):
        f = pre_f + str(p) + '.nc'
        print(f)

输出

2idd_flyXMAP_0400_0.nc
2idd_flyXMAP_0400_1.nc
2idd_flyXMAP_0400_2.nc
2idd_flyXMAP_0400_3.nc
2idd_flyXMAP_0400_4.nc
2idd_flyXMAP_0405_0.nc
2idd_flyXMAP_0405_1.nc
2idd_flyXMAP_0405_2.nc
2idd_flyXMAP_0405_3.nc
2idd_flyXMAP_0405_4.nc
2idd_flyXMAP_0405_5.nc

答案 1 :(得分:1)

您也可以使用enumerate

$('#myDiv').on('tokenize:tokens:remove', function(event, value, text) {
  dostuff();
  $(this).trigger('tokenize:focus'); //refocus same input
});

答案 2 :(得分:0)

您可以使用zip

for point, scan in zip(points, scans):
   for p in range(point):
      print("2idd_flyXMAP_0{a}_{b}.nc".format(a=scan, b=p))