循环缩进中的列表索引超出范围

2024-05-19 09:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个程序,使用第二个列表搜索字符串列表。第一个列表是随机拼凑的字母列表,第二个列表是单词列表。程序应该检测第二个列表中的每个单词是否可以在第一个列表中的任何字符串中找到。如果是,则将找到的单词添加到第三个空列表中

counter = 0
for a in FirstList:
    for b in SecondList:
        if SecondList[counter] in FirstList[counter]:
            ThirdList += [SecondList[counter]]
        counter += 1
        if counter >= len(SecondList):
            break
return ThirdList

但是,它在第一个if语句中抛出一个错误,该语句声称列表索引超出范围。我不太明白我遗漏了什么,因为我没有编辑我正在迭代的任何列表的内容,这就是这个错误的原因,在关于相同错误的其他帖子中


Tags: 字符串in程序列表forlenif错误
2条回答

您不应该重复这两个列表。您的计数器超出了两个列表中的元素数量。如果我很了解您要做的事情,您可以使用以下代码:

ThirdList = []
for word in SecondList:
  for random_word in FirstList:
    if word in random_word and word not in ThirdList:
      ThirdList.append(word)
return ThirdList

如果第三个列表中的重复元素没有问题,可以删除if语句的第二个条件

这里的问题是,您使用的计数器的大小应该与SecondList相同,但如果FirstList较小,“计数器”将超出FirstList的范围

我认为这可能更接近你想要实现的目标:

ThirdList = [word for word in SecondList for string in FirstList if word in string]

这是一个list comprehension,它在两个列表中运行,并输出第二个列表中出现在第一个列表中的任何值中的任何值

例如,代码:

FirstList = ["aadada", "asdtest", "hasdk"]
SecondList = ["test", "data"]
ThirdList = [word for word in SecondList for string in FirstList if word in string]
print(ThirdList)

您将收到输出:“test”,因为test位于第一个列表中

相关问题 更多 >

    热门问题