【问题标题】:How can I get rid of index error while printing nested list?打印嵌套列表时如何摆脱索引错误?
【发布时间】:2021-11-07 15:21:32
【问题描述】:
fruits = ["Strawberries", "Nectarines", "Apples", "Grapes", "Peaches", "Cherries", "Pears"]

vegetables = ["Spinach", "Kale", "Tomatoes", "Celery", "Potatoes"] 

dirty_dozen = [fruits, vegetables]

print(dirty_dozen[-1][-3])

如果上面的那行代码可以打印,那为什么下面的不能打印呢?

print(dirty_dozen[-7])

【问题讨论】:

  • 请使用三个反引号正确格式化代码```
  • 因为您试图访问只有 2 个元素(fruitsvegetables)的列表的倒数第七个元素。您可能正在寻找print(dirty_dozen[-1][-7])

标签: python list index-error


【解决方案1】:

print(len(dirty_dozen))检查dirty_dozen的长度,你会发现它只有2个元素(fruitsvegetables列表)。

您可以使用dirty_dozen[-1] 访问最后一个元素,或者使用dirty_dozen[-2] 访问倒数第二个元素,但由于只有2 个子列表,因此访问第-7 个元素是越界的。

【讨论】:

    【解决方案2】:

    如果您希望能够访问dirty_dozen[-7],那么您可能希望将这些列表合并为一个列表。

    例如,以下任一方法都应该有效:

    dirty_dozen = [*fruits, *vegetables]
    # or: dirty_dozen = fruits + vegetables
    
    print(dirty_dozen[-7])
    

    【讨论】:

      【解决方案3】:

      因为它是一个嵌套列表。列表 dirty_dozen 的长度为 2,因此 -7 的索引将是 -5 的索引,这是不可能的。

      第一个示例打印,因为第一次访问是列表的最后一个元素,即蔬菜列表。第二次访问是该列表的倒数第三个元素。

      【讨论】:

        【解决方案4】:

        dirty_dozen 中只有两个元素,因为您将其初始化为dirty_dozen = [fruits, vegetables]。访问“倒数第 7 个元素”会使索引下溢,从而导致错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-28
          • 1970-01-01
          • 2013-12-15
          • 1970-01-01
          相关资源
          最近更新 更多