为什么在Python3中发生列表索引超出范围

时间:2020-07-07 14:19:37

标签: python python-3.x

我正在学习Python,在这段代码IndexError: list index out of range中遇到了last_element2 = each_list2[-1]。我试图通过添加each_list2不为0来解决它,但仍然无法正常工作。

我该如何解决?谢谢!

for each_list2 in nodesAbandonedTotal:
   if each_list2 is not 0:
      last_element2 = each_list2[-1]
      final_element2 = last_element2[-1]
      if final_element2 == "get_started" or final_element2 == "saludo":
         countGetStarted = countGetStarted + 1
      elif final_element2 == "ae-1" or final_element2 == "ae-d":
         countFaltaEntendimiento = countFaltaEntendimiento + 1

3 个答案:

答案 0 :(得分:1)

您的代码中存在严重的缩进错误:

for each_list2 in nodesAbandonedTotal:
   if each_list2:
      last_element2 = each_list2[-1]
      final_element2 = last_element2[-1]
      if final_element2 == "get_started" or final_element2 == "saludo":
         countGetStarted = countGetStarted + 1
      elif final_element2 == "ae-1" or final_element2 == "ae-d":
         countFaltaEntendimiento = countFaltaEntendimiento + 1

这假设each_list2是一个列表,如果它是整数,请使用:each_list2 != 0

答案 1 :(得分:1)

您可以检查列表中是否有项目

if len(each_list2) > 0:

if each_list2:

这将检查列表是否为空。 此外,if final_element2 == "get_started" or final_element2 == "saludo":elif final_element2 == "ae-1" or final_element2 == "ae-d":必须位于if each_list2:支票内

for each_list2 in nodesAbandonedTotal:
   if each_list2:
        last_element2 = each_list2[-1]
        final_element2 = last_element2[-1]
        if final_element2 == "get_started" or final_element2 == "saludo":
          countGetStarted = countGetStarted + 1
        elif final_element2 == "ae-1" or final_element2 == "ae-d":
          countFaltaEntendimiento = countFaltaEntendimiento + 1

答案 2 :(得分:1)

尽管@Leo和@Roshin提供的答案很接近,但它们未能在对last_element2进行索引之前验证其元素。由于您最初的问题与索引问题有关,因此解决方案不应容易出现其他索引问题。

例如,尝试使用有效负载nodesAbandonedTotal = [ [ [ ] ] ],您将看到两个建议的解决方案均失败。

这是一个经过修订的解决方案,可以解决last_element2为空的情况。

for each_list2 in nodesAbandonedTotal:
    if each_list2:
        last_element2 = each_list2[-1]
        if last_element2:
            final_element2 = last_element2[-1]
        else:
            final_element2 = None
        if final_element2 == "get_started" or final_element2 == "saludo":
            countGetStarted = countGetStarted + 1
        elif final_element2 == "ae-1" or final_element2 == "ae-d":
            countFaltaEntendimiento = countFaltaEntendimiento + 1

相关问题