LIS代码在python中给出错误

时间:2014-12-10 14:36:07

标签: python

我正在用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

1 个答案:

答案 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;周围加上空格,使其更具可读性。