[英]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.