繁体   English   中英

循环不会遍历列表

[英]loop does not iterate over list

我想在输出列表中的 append 列表中的每个字母或字母序列(对于序列字母,我用 0 个传入元素替换,以便可以忽略它)。 我不明白为什么我的循环没有正确地遍历列表,它只发现“okj”的一次出现。

s = "okjokjokj"
l = []
for i in s:
    l.append(i)

dico = ["a", "bc", "okj"]
output = []

for i in l:
    if i + l[l.index(i)+1] + l[l.index(i)+2] in dico:
        print (i+l[l.index(i)+1]+l[l.index(i)+2], "found")
        output.append(i + l[l.index(i)+1] + l[l.index(i)+2])
        l[l.index(i)+1] = "0"
        l[l.index(i)+2] = "0"
        print(l)
    if i + l[l.index(i)+1] in dico:
        print (i+l[l.index(i)+1], "found")
        output.append(i + l[l.index(i)+1])
        l[l.index(i)+1] = "0"
        print(l)
    if i in dico:
        print (i, "found")
        output.append(i)
        print(l)
    if i == "0":
        print ("nothing found")
        print (l)

print("\n output is", output)

output 是:

okj found
['o', '0', '0', 'o', 'k', 'j', 'o', 'k', 'j']
nothing found
['o', '0', '0', 'o', 'k', 'j', 'o', 'k', 'j']
nothing found
['o', '0', '0', 'o', 'k', 'j', 'o', 'k', 'j']

 output is ['okj']

找到第一次出现后,您的列表是:

['o', '0', '0', 'o', 'k', 'j', 'o', 'k', 'j']

因此,当您的程序运行该行时:

i + l[l.index(i)+1] + l[l.index(i)+2] in dico

这意味着: 'o' + '0' + '0'因为它采用列表中第一次出现的'o'(index('o')=0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM