繁体   English   中英

尝试在python2中创建数字的finit序列:IndexError(初学者)

[英]Trying to create finit sequences of numbers in python2: IndexError (beginner)

编辑:最初的问题现在已经解决,请看问题的底部; 我还有另一个问题。

我有一个列表s2 ,它的第一个元素( s[0] )是长度为n (由用户输入定义)的数字列表,并且其元素也由用户定义。 我想要做的是像s2其他元素一样创建n-1个数字序列。 这些序列中的每个序列都减去前一个序列中的顺序元素。 (右侧元素-左侧元素),因此第二个序列的长度为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秒)

您需要先初始化每个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])

您指的是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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM