我想在输出列表中追加列表中的每个字母或字母序列(对于序列字母,我将其替换为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)
输出为:
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']
答案 0 :(得分:0)
找到第一个匹配项后,您的列表为:
['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)
第一次出现的索引