Python:for循环中的索引正在重置而没有任何理由

时间:2014-09-24 12:34:41

标签: python-2.7 for-loop

首先,我想为我的英语道歉,因为它不是我的母语。

我在使用以下代码时遇到了一个非常棘手的问题:

linecounter = []

for i in range(20):
    linecounter.append("Color "+str(i)+"\n")


for line in linecounter:
    color_list = range(20)
    for j in range(len(color_list)):
        stri = "Color " + str(j+1)
        if stri in line:
            print j

我期望的结果: 0 1 2 3 4 五 6 7 8 9 10 11 12 13 14 15 16 17 18 19

我得到的结果: 0 1 2 3 4 五 6 7 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15 0 16 0 17 0 18

有人可以告诉我如何得到这个结果或我如何得到我想要的结果?

我要感谢所有回答的人。

真诚的,Nikster

2 个答案:

答案 0 :(得分:1)

由于in运算符对字符串起作用的方式,正在打印这些额外的零。当line"Color10"stri"Color1"时,则if stri in line计算为True,并打印j的值,此时为零。< / p>

尝试使用等式比较而不是in。您还需要在stri的末尾添加换行符,以便进行正确比较。

    stri = "Color " + str(j+1) + "\n"
    if stri == line:
        print j

这将打印0到18之间的数字。我不完全理解你要做的是什么,但是如果你想要打印19,你可以尝试不向j添加1:

    stri = "Color " + str(j) + "\n"
    if stri == line:
        print j

答案 1 :(得分:0)

奇怪的逻辑但是:

linecounter = []

for i in range(20):
    linecounter.append("Color "+str(i))


for line in linecounter:
    color_list = range(20)
    for j in range(len(color_list)):
        stri = "Color " + str(j+1)
        if stri == line:
            print j