【问题标题】:List index out of range, apparently nothing wrong列表索引超出范围,显然没有错
【发布时间】:2018-10-15 12:15:40
【问题描述】:
transposta = []
nova_linha = []
for i in range (len(matriz)):
    for j in range(len(matriz[i])):
        nova_linha.append(matriz[i][j])
        i+=1
    transposta.append(nova_linha)
    j+=1
    nova_linha = []
return transposta

我在 nova_linha.append(matriz[i][j]) 行中出现列表索引超出范围错误

为什么会这样?

【问题讨论】:

  • 请发布整个异常,而不是对其进行粗略的描述。
  • 加上重现异常的代码。
  • 这整件事似乎是在尝试转置一个方阵(存储为列表列表),you can write as a one-liner with zip。但当然也值得学习如何显式编写它(以及如何使用for 循环)。

标签: python list indexing range


【解决方案1】:

这样可以正常工作:

for i in range (len(matriz)):
    for j in range(len(matriz[i])):
        nova_linha.append(matriz[i][j])    
    transposta.append(nova_linha)
    nova_linha = []

但是,您添加了 i += 1j += 1 的行。 forrange 上的循环已经为您解决了这个问题。

通常,这既无害又无用,因为您的更改将在下一次循环中被丢弃 - 但您也将它们倒退。所以现在,每次通过内部循环,你都会增加i,很快你就会跑出矩阵的底部。

【讨论】:

    猜你喜欢
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多