将嵌套for循环转换为while循环python

时间:2017-08-16 12:40:48

标签: python-3.x for-loop while-loop string-comparison

我知道这可能是一个愚蠢的问题,但如何正确地从for loop转换为while loop。如果你问我为什么是因为我想知道如果在break

中间有for loop语句,while循环的结构是什么样的

到目前为止,这是我的代码:

genelist = []
integer = 0
for i in range(0, len(first_genome)):
    for j in range(0, len(second_genome)):
        integer = integer + 1
        if first_genome[i] == second_genome[j]:
            genelist.append(first_genome[i])
            break
return(genelist, integer)

for循环没有错误但最让我烦恼的是这个代码用于while循环:

    genelist = []
    integer = 0
    i = 0
    j = 0
    while i < len(first_genome):
        while i < len(second_genome):
            integer = integer + 1
            if first_genome[i] == second_genome[j]:
                genelist.append(first_genome[i])
                j = j + 1
                break
        i = i + 1
    return(genelist, integer)

与:

相同
    genelist = []
    integer = 0
    i = 0
    j = 0
    while i < len(first_genome):
        while j < len(second_genome):
            integer = integer + 1
            if first_genome[i] == second_genome[j]:
                genelist.append(first_genome[i])
                j = j + 1
                break
        i = i + 1
    return(genelist, integer)

这怎么可能?

1 个答案:

答案 0 :(得分:0)

代码不一样。

在第一个while循环中,您以无限循环结束,因为i永远不会在内部递增。 在第二个示例中,您已将ij代码分开。

在开始内部j = 0循环之前,您在第二个代码上缺少的是while

genelist = []
integer = 0
i = 0
j = 0
while i < len(first_genome):
    j = 0 #Added this
    while j < len(second_genome):
        integer = integer + 1
        if first_genome[i] == second_genome[j]:
            genelist.append(first_genome[i])
            j = j + 1
            break
    i = i + 1
return(genelist, integer)