Я использую 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 будет иметь больше файлов, связанных с ним. я был близок к следующему коду, но характер цикла вложенного цикла меня много раз повторял и генерировал нежелательные строки (т.е. набор для сканирования 400, содержащий 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
и первой point
цикла после завершения первой point
цикла. Я не уверен, как это сделать, но я думаю, что это должно решить мою проблему.
конечно, я открыт для раздельных, простых подходов и заблаговременно за вашу помощь!
Вы можете использовать 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))
Вы можете использовать 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
Вы также можете использовать перечисление
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)