【问题标题】:Trying to create finit sequences of numbers in python2: IndexError (beginner)尝试在 python 中创建有限的数字序列:IndexError(初学者)
【发布时间】:2018-12-15 00:18:18
【问题描述】:

edit:现在解决了最初的问题,看问题的底部;我还有一个问题。

我有一个列表,s2,它的第一个元素 (s[0]) 是长度为 n 的数字列表(由用户输入定义),其元素也由用户定义。我想要做的是创建 n-1 个数字序列作为s2 的其他元素。这些序列中的每一个都是由前一个序列中的顺序元素的减法组成。 (右元素 - 左元素)所以第二个序列的长度是 n-1,第三个:n-2 ... 第 n 个序列的长度(s2[n-1]'s)是 1。

for j in range(1, n):
    for k in range(0,n-j):
        s2[j].append(s2[j-1][k+1] - s2[j-1][k])

但我收到此错误:

Traceback (most recent call last):
  File "[path]", line 9, in <module>
    s2[j].append(s2[j-1][k+1] - s2[j-1][k])
IndexError: list index out of range

你能帮我调试一下吗?

编辑:

n = int(raw_input())
s = raw_input()
s1 = [int(i) for i in s.split(" ")]
s2 = []
s2.append(s1)
for j in range(1, n):
    for k in range(0,n-j):
        s2[j].append(s2[j-1][k+1] - s2[j-1][k])

示例输入:

4
1 2 3 4

ps:你能建议我另一种方法来比这更快地获得第 n 个吗?而不是创建所有这些列表? (即使 n 很大,我也希望它花费不到 1 秒)

【问题讨论】:

  • 您在这里使用的是list,而不是array。数组存在于 python 中,是完全不同的东西。
  • 请提供输入输出示例。

标签: python python-2.7 list debugging index-error


【解决方案1】:

您指的是s2[j],但尚未创建它。试试这样的

for j in range(1, n):
    s2.append([]) 
    for k in range(0, n-j): 
        s2[j].append(s2[j-1][k+1] - s2[j-1][k])

【讨论】:

    【解决方案2】:

    您需要在尝试使用每个s2 元素之前对其进行初始化。不然python怎么知道是什么类型?

    for j in range(1, n):
        s2.append(list())
        for k in range(0, n-j):
            s2[j].append(s2[j-1][k+1] - s2[j-1][k])
    

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 1970-01-01
      • 2011-12-14
      • 2023-02-22
      • 1970-01-01
      • 2012-07-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多