首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入式循环Python

嵌入式循环Python
EN

Stack Overflow用户
提问于 2014-03-03 16:58:10
回答 2查看 238关注 0票数 0

我有这个密码

代码语言:javascript
复制
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)

代码语言:javascript
复制
chararray(['465000725000010', '43000145000011', '40000536000011',
   '499000523000009', '463000313000010', '470000639000011',
   '462000416000010', '499000549000008', '506000176000009']

我想做的是,我的程序应该一个一个地接受halo_param的值,然后根据一个(即,即第一个文件应该命名为halo_0.fits和第二个halo_1.fits等)的范围写出文件。

如果我删除第二个循环,我的程序就会正常工作,也就是说,它会打印出带有halo_param值的文件,比如halo_465000725000010、halo_43000145000011等等。

如果包含第二个for循环,则我的程序可以工作,但对所有文件执行相同的第一个条件。

我在这里做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-03 17:09:01

不要做循环中的循环;把它压平,就像

代码语言:javascript
复制
for i,n in enumerate(halo_param):
    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写到file_0,然后halo_param1写到file_0,file_1,.然后halo_param8到file_0,file_1,file_2 .最后,所有文件都是最后一个文件的副本。

票数 3
EN

Stack Overflow用户

发布于 2014-03-03 17:14:09

修正字符串格式?

代码语言:javascript
复制
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)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22152631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档