Python 使用列表进行循环迭代
Python for loop iteration using lists
closur=[]
i=6
dis_tn=distance[i]
headnode=x
for k in headers[headnode]:
if distance[k]<=dis_tn:
if i in headers[k]:
closur.append(x)
closur.append(k)
closur.append(i)
else:
#break
headnode=k
continue
print "Closure of (",x,",",i,")= ",closur
在上面给出的代码中,在else部分,我需要headnode=k并且在下一次迭代中,for循环需要取k的值。
例如:如果,headers[headnode]=headers[0]==[5,3,1]
headers[5]==[4,1]
在第一次迭代中,将取5。如果不满足if条件,在else部分,headnode的值变为5,对于第二次迭代,我需要headers[5] 待采纳。但是这里它需要下一个 headers[0],即 3 而不是 4.
应该做哪些改变才能解决上述问题??
for 循环不断遍历列表 headers[headnode]
。所以你不能通过重新初始化 headnode
来改变迭代列表。根据您上面的描述,以下代码应该可以满足您的要求。
closur=[]
i=6
dis_tn=distance[i]
headnode=x
dont_break = True
while dont_break:
dont_break = False
for k in headers[headnode]:
if distance[k]<=dis_tn:
if i in headers[k]:
closur.append(x)
closur.append(k)
closur.append(i)
else:
headnode=k
dont_break = True
break
print "Closure of (",x,",",i,")= ",closur
headers[node] 生成了一个可迭代对象,它是静态的。在循环中,每次迭代通过调用next()方法获取值。
closur=[]
i=6
dis_tn=distance[i]
headnode=x
for k in headers[headnode]:
if distance[k]<=dis_tn:
if i in headers[k]:
closur.append(x)
closur.append(k)
closur.append(i)
else:
#break
headnode=k
continue
print "Closure of (",x,",",i,")= ",closur
在上面给出的代码中,在else部分,我需要headnode=k并且在下一次迭代中,for循环需要取k的值。 例如:如果,headers[headnode]=headers[0]==[5,3,1] headers[5]==[4,1]
在第一次迭代中,将取5。如果不满足if条件,在else部分,headnode的值变为5,对于第二次迭代,我需要headers[5] 待采纳。但是这里它需要下一个 headers[0],即 3 而不是 4.
应该做哪些改变才能解决上述问题??
for 循环不断遍历列表 headers[headnode]
。所以你不能通过重新初始化 headnode
来改变迭代列表。根据您上面的描述,以下代码应该可以满足您的要求。
closur=[]
i=6
dis_tn=distance[i]
headnode=x
dont_break = True
while dont_break:
dont_break = False
for k in headers[headnode]:
if distance[k]<=dis_tn:
if i in headers[k]:
closur.append(x)
closur.append(k)
closur.append(i)
else:
headnode=k
dont_break = True
break
print "Closure of (",x,",",i,")= ",closur
headers[node] 生成了一个可迭代对象,它是静态的。在循环中,每次迭代通过调用next()方法获取值。