我对计算机科学相对较新,我正在学习如何在python中编写代码。我试图弄清楚如何创建一个函数,该函数接受一个列表并从输入列表返回一个后缀列表,按照从最短长度到最长长度的顺序。例如,输入 [3,4,2,-9,7,6,1]
的函数将返回 [[],[1],[6,1],[7,6,1],[-9,7,6,1],[2,-9,7,6,1],[4,2,-9,7,6,1],[3,4,2,-9,7,6,1]]
蟒蛇后缀数组的变化
我试过多种方法,但到目前为止,我没有多少运气。以下是我迄今为止:
def h(m):
newlist = []
x = 0
y = (len[m])-1
while x in range(y):
sublist = []
sublist = sublist + m[x:y]
newlist.append(sublist)
x += 1
return new list
当我尝试通过输入类似
a = [3,4,2,-9,7,6,1]
h(a)
运行功能,我得到一个错误:
Traceback (most recent call last):
File "<pyshell#239>", line 1, in <module>
h(a)
File "<pyshell#238>", line 4, in h
y = (len[m])-1
TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'
我的目标与此位的代码仅仅是创建一个后缀列表,而不需要按照长度对它们进行排序。在弄清楚如何创建这个新列表之后,我将添加代码的排序位。请记住,这不是一项家庭作业。任何帮助将不胜感激!
工作正常!谢谢!你的解释也很有帮助 –
这是因为范围不包括从右边:范围(5)实际上返回[0,1,2,3,4]。所以,你不会做[7:7],而是[6:7]。在循环本身中处理这种情况会更好 - 使其范围(y + 1)。 – mpolednik
抱歉,我刚刚删除了我的评论,因为我知道它在做什么。非常感谢! –