Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中后缀数组的变化_Python_Arrays - Fatal编程技术网

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

我对计算机科学比较陌生,我正在学习如何用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__'
回溯(最近一次呼叫最后一次):
文件“”,第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