我有這樣的代碼嵌入式for循環的Python
for n in halo_param:
for i in range(0,a):
mask = var1['halo_id'] == n
newtbdata = tbdata1[mask]
hdu = pyfits.BinTableHDU(newtbdata)
hdu.writeto(('/home/ssridhar/test_roncarelli/13.8_M200_13.9/halo_{0}.fits').format(i))
這裏halo_param
是chararray和a = len(halo_param)
chararray(['465000725000010', '43000145000011', '40000536000011',
'499000523000009', '463000313000010', '470000639000011',
'462000416000010', '499000549000008', '506000176000009']
我所試圖做的是,我的程序應在halo_param的值,逐個寫出文件,並根據範圍寫出文件(即說第一個文件應命名爲halo_0.fits和second halo_1.fits等)
我的程序似乎如果我刪除我的第二個for循環即它打印出與halo_param值的文件,如halo_465000725000010,halo_43000145000011等
如果循環,二是包括在內,我的程序做的工作工作,但對所有文件執行相同的第一個條件
我在這裏做錯了什麼?
這似乎工作!但如果可能的話,你能解釋爲什麼循環內循環不起作用? – ThePredator
但是,如果a = 10,並且當我在範圍(0,a)中說我:我不在每個步驟中取值0到9?這就是我以這種方式編寫代碼的原因。 – ThePredator
@Srivatsan:是的,我的不好:對於項目0,它寫入所有文件;那麼對於第1項,它將_all_文件寫入_again_,從而破壞上一週期的工作;然後是項目2,3 ...... 9.您最終反覆地完成這項工作,最終只得到項目9的輸出。展平循環將項目1的數據放入文件1中,項目2的數據放入文件2中等。 –