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()方法获取值。