Python后缀Generator

时间:2013-12-11 01:43:16

标签: python list

以下Python代码应生成所有可能的后缀。因此,在输入[1,2,3]上,应生成以下内容:[[], [3], [2, 3], [1,2,3]]

def suffixes(lst):
    return [lst [t:len(lst)+1-t] for t in range ( len(lst)+1, 0 , -1)]

print suffixes ([1, 2])

我一直得到以下输出:

[ [], [], [2] ]

1 个答案:

答案 0 :(得分:3)

更简洁的方法可能就是这样做:

return [lst[t:] for t in range(len(lst), -1, -1)]

从列表末尾到开头,range向后计数t,并在您继续使用后缀。

您的解决方案不起作用的原因是因为len(lst+1),您可能希望len(lst)+1

此外,您在range开始len(lst) + 1,因此您获得[]两次,因为在列表结尾之后开始的后缀与从结尾开始的后缀相同列表。

您还会在range结束0。因为range在第二个参数上是独占的,所以您永远不会将整个列表作为后缀之一。您需要在range结束-1以在列表解析中包含t=0