【问题标题】:Getting "IndexError: list index out of range" when trying to append to nested list尝试附加到嵌套列表时出现“IndexError:列表索引超出范围”
【发布时间】:2022-01-31 04:27:36
【问题描述】:

这是我为项目编写的代码的一部分。当我运行时出现错误

IndexError:python 中的列表索引超出范围

s = "thisisTest"
m = list(s)
new_list = []
k = 0
d = 0
elemme = False

for i in m:
    if i.islower():
        elemme = True
        while elemme:
            k +=1
            new_list[k].append(i)
    elif i.isupper():
        elemme = False
        while elemme:
             k +=1
            new_list[k].append(i)

print(new_list)

有人可以解释这是什么原因吗?我不需要新的解决方案,我只需要解释。

【问题讨论】:

  • 这段代码的目标是什么?
  • 在第一次迭代中,当new_list 为空时,您尝试访问new_list[1]。这会引发您看到的异常。
  • 请填写失败的行。但我认为它可能在new_list[k][d].append(I) 上您正在new_list=[] 中创建一个空列表。尝试将创建语法更改为new_list=[[] * k for i in range(d)]。
  • 是的,这就是答案。我需要的。谢谢

标签: python list


【解决方案1】:

new_list 一开始是空的。所以任何试图访问new_list[k] 的东西都会失败,不管k 的值是多少。

您需要先将内容附加到new_list,然后才能开始访问其元素。

【讨论】:

    【解决方案2】:

    您可以尝试使用new_list.append(i) 代替new_list[k].append(i)。

    当然如果new_list是列表列表,那么new_list[k]是正确的。

    【讨论】:

      【解决方案3】:

      首先。你必须使用 new_list.append(i)。

      然后我不明白这段代码的目标。我没有得到你想要做什么。在代码sn-p中:

      > if i.islower():
      >         elemme = True
      >         while elemme:
      >             k +=1
      >             new_list.append(i)
      

      您将 ellemme 设置为 True 并且当 elemme 为 True 时进行迭代(始终为 True)。所以这将产生无限循环并会产生内存错误。另一方面,

      elemme = False
      while elemme:
         k +=1
         new_list.append(i)
      

      这里需要什么while循环,很明显elemme是错误的。

      【讨论】:

        猜你喜欢
        • 2016-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 2015-06-26
        相关资源
        最近更新 更多