我正在用Python编写这个增长最快的子序列代码,但我一直收到这个错误:
Traceback (most recent call last):
File "solution.py", line 9, in <module>
if s[j]<s[i] and len(l[i])<len(l[j])+1 :
Index Error: list index out of range
我以前遇到同样的错误。我编写代码的风格是否有任何错误?
n=int(raw_input())
s=map(int,raw_input().split())
l=[]
l.append([]*1000)
l[0].append(s[0])
for i in range(n):
for j in range(i):
if s[j]<s[i] and len(l[i])<len(l[j])+1 :
l[i]=l[j]
l[i].append(s[i])
lo=0
for x in l:
if lo<len(x):
lo=len(x)
print lo
答案 0 :(得分:1)
问题是你成倍增加的列表。由于它是空的,它仍然是空的。
In [3]: [] * 1000
Out[3]: []
如果您想要1000个空列表,而不是
l=[]
l.append([]*1000)
你可以做例如
l = [[] for _ in xrange(1000)]
代码中可能还有其他问题,但这是第一个问题,应首先处理。
关于代码样式,请使用更多空格。浏览PEP-8 - Style Guide for Python Code了解更多详情。首先,在&#34; =&#34;周围加上空格,使其更具可读性。