python循环语句continue_在Python中嵌套for循环中使用Continue语句

嗨,我有一个从两个文件中读取数据的函数。我想要的是外部循环开始读取第一个文件,如果第一个文件中的lum大于定义值(LC),那么循环将跳到下一个迭代。如果没有,代码将移动到

内部循环,读取hlist并在idc和id相同的情况下构建x、y、z列表。如果idc和id不是同一个值,它将跳到下一个内循环迭代。当我打印测试语句时,似乎内部循环没有迭代,我不清楚原因。我会很感激你的帮助

代码def read_file(F): #Function that reads data froma file #and extracts specific data columns

X_pos = []

Y_pos = [] # Creats Data Lists

Z_pos = []

Idh = []

Id = []

LC = float(sys.argv[1])

N = 11#912639 # number of lines to be read

Nl = 11#896030

fl = open(Fl) #opens catalog file

fl.readline()

nlines_catalog = islice(fl, Nl)

f = open(F) #Opens hlist file

f.readline() # Strips Header

nlines_hlist = islice(f, N) #slices file to only read N lines

for linel in nlines_catalog:

if linel != '':

linel = linel.strip()

linel = linel.replace('\t', '')

columnsl = linel.split()

lum = float(columnsl[1])

id_catalog = int(columnsl[0])

if lum >= LC:

continue

print("lum1 =", lum)

#Id.append(idc)

print("id_catalog=", id_catalog)

for line in nlines_hlist:

if line != '':

line = line.strip()

line = line.replace('\t', ' ')

columns = line.split()

id_hlist = int(columns[1])

#Idh.append(id)

if id_hlist != id_ccatalog:

continue

print('idc =', idc, 'id =', id)

x = columns[17]

y = columns[18]

z = columns[19]

X_pos.append(x)

Y_pos.append(y) #appends data in list

Z_pos.append(z)

print(X)

X = [float(p) for p in X_pos]

Y = [float(p) for p in Y_pos]

Z = [float(p) for p in Z_pos]

Xa = numpy.array(X, dtype=float)

Ya = numpy.array(Y, dtype=float)

Za = numpy.array(Z, dtype=float)

return(Xa, Ya, Za)

编辑

对内部循环的更改,允许它重新设置并开始工作。在

^{pr2}$

编辑

我无法从印刷品上复制出我最初的声明,并进行了编辑以反映这一事实VirtualBox:~$ python /home/Astrophysics/Count_FixedLoop.py -21.5 125

('lum1 =', -21.78545)

('idc=', 2701276876L)

('idc =', 2701276876L, 'id =', 2701276876L)

('lum1 =', -21.69835)

('idc=', 2699751347L)

('lum1 =', -21.69942)

('idc=', 2699724518L)

('lum1 =', -21.74543)

('idc=', 2699724331L)

('lum1 =', -21.60912)

('idc=', 2699724726L)

('lum1 =', -21.53862)

('idc=', 2699725014L)

('lum1 =', -21.53155)

('idc=', 2701277269L)

['34.57223']

这就是我期望的输出('lum1 =', -21.78545)

('idc=', 2701276876L)

('idc =', 2701276876L, 'id =', 2701276876L)

('lum1 =', -21.69835)

('idc=', 2699751347L)

('idc =', 2699751347L, 'id =', 2699751347L)

('lum1 =', -21.69942)

('idc=', 2699724518L)

('idc =', 2699724518L, 'id =', 2699724518L)

('lum1 =', -21.74543)

('idc=', 2699724331L)

('idc =', 2699724331L, 'id =', 2699724331L)

('lum1 =', -21.60912)

('idc=', 2699724726L)

('idc =', 2699724726L, 'id =', 2699724726L)

('lum1 =', -21.53862)

('idc=', 2699725014L)

('idc =', 2699725014L, 'id =', 2699725014L)

('lum1 =', -21.53155)

('idc=', 2701277269L)

编辑

Fl文件的几行示例,其中idc编号为第[0]列,lum值为第[1]列。我已经在第一个循环中用粗体打印出满足条件的idc值。在Format: ID, scatter = 0 0.05 0.1 0.13 0.15 0.16 0.18 0.2 0.25 0.3

**2701276876 -21.78545** -21.73791 -21.68872 -21.11125 -20.88102 -22.04709 -21.41715 -20.56944 -20.36757 -19.69895

**2699751347 -21.69835** -21.67935 -21.92425 -21.03465 -21.56561 -21.42124 -21.72893 -20.78131 -20.76342 -20.34830

**2699724518 -21.69942** -21.58352 -21.71149 -21.16240 -21.18507 -22.00277 -21.81500 -20.36141 -20.78227 -20.65697

编辑

F文件的样本行,其id和对应的位置与第一个文件相匹配#Scale(0) Id(1) Desc_scale(2) Descid(3) Num_prog(4) Pid(5) Upid(6) Desc_pid(7) Phantom(8) Mvir(9) Orig_Mvir(10) Rvir(11) Rs(12) Vrms(13) Mmp(14) Last_mm(15) Vmax(16) X(17) Y(18) Z(19)

0.9523 **2701276876** 0.9583 2714557311 1 -1 -1 -1 0 3.56533e+13 3.56100e+13 695.459000 80.562000 548.820000 1 0.3603 561.490000 **34.57223 140.20813 130.81985** -110.000 323.430 -123.520 3.56533e+13 3.56533e+13 561.490000 599.410000 7.539e+14 -3.799e+12 -1.992e+14 0.10259

0.9523 **2699751347** 0.9583 2713034575 4 -1 -1 -1 0 3.36604e+13 3.31300e+13 678.981000 111.199000 500.400000 1 0.8083 514.010000 **28.70439 138.70247 138.52176** -215.310 252.520 -120.970 3.36604e+13 3.36604e+13 514.010000 599.250000 5.516e+14 1.044e+14 6.133e+14 0.10973

0.9523 **2699724518** 0.9583 2713007786 1 -1 -1 -1 0 2.98000e+13 2.97500e+13 654.997000 87.324000 457.460000 1 0.4863 514.660000 **8.01627 135.31783 123.13322** -178.990 558.900 1.250 2.98000e+13 2.98000e+13 514.660000 514.660000 8.529e+14 2.711e+14 -3.624e+14 0.15137

我期望的是,当两个文件中的id匹配时,第二个循环将附加X、Y和Z位置列表。因此,打印本例中的列表将给出X = [34.57223,28.70439,8.01627]

Y = [140.20813,138.70247,135.31783]

Z = [130.81985,138.52176,123.13322]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值