python中后缀数组的变化
我对计算机科学比较陌生,我正在学习如何用python编写代码。我正试图弄清楚如何创建一个函数,该函数接受一个列表,并从输入的列表中返回后缀列表,按从最短长度到最长长度的顺序排列。例如,输入python中后缀数组的变化,python,arrays,Python,Arrays,我对计算机科学比较陌生,我正在学习如何用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
[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__'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
h(a)
文件“”,第4行,h中
y=(len[m])-1
TypeError:“内置函数”或“方法”对象没有属性“\uuuu getitem\uuuu”
我使用这段代码的目的只是创建一个后缀列表,而不按长度排序。在我弄清楚如何创建这个新列表后,我将添加代码的排序位。记住这不是家庭作业。任何帮助都将不胜感激 使用括号获取列表的长度:
y = len(m) - 1
可能的解决方案是使用列表理解:
[l[i:] for i in range(len(l), -1, -1)]
这段代码使用切片和列表理解来简单地从末尾返回一个切片列表。使用代码时,需要进行一些小的修改-len是一个函数而不是字典,因此需要使用call操作符()而不是subscript操作符[]
y = len(m) - 1
但这不会产生正确的结果,因为您不会得到最后一个后缀和空后缀。为了覆盖这两个,您需要修改y或循环以覆盖它们
y = len(m) + 1
或者更好
while x in range(y + 1):
您的
镜头中有错误:
(len[m]) - 1
len
是一个函数,不能对其进行索引、切片或其他操作。改为这样做:
y = len(m) - 1
还有一个错误:
return new list
应该是:(变量中不能有空格)
不管怎样,你可能应该使用mpolednik的答案。这更像是python,因为range不是从右边包含的:range(5)实际上返回[0,1,2,3,4]。所以,你不会做[7:7],而是[6:7]。最好是在循环本身中处理这种情况-使其范围为(y+1)。抱歉,我刚刚删除了我的评论,因为我知道它在做什么。非常感谢你!
return newlist