2017-12-03 115 views
0

我可以像这样实现这个用法[a[i:i+3], for i in range()]。 但是我发现当a很大时,它会花费太多的cpu资源,我怎么能解决这个瓶颈?python convert list [0,1,2,3,4,5] to [0,1,2],[1,2,3],[2,3,4]

+0

你的名单到底是什么?只有整数或字符串的组合?为获得最佳帮助,请指定可能的列表元素。 – Gahan

+0

我有两种类型的列表。整数和花车列表。 –

+0

您可能需要备份并描述您尝试使用这些列表解决的较大问题的上下文;也许我们可以提供一个不需要构建大数据结构的建议。 –

回答

4

如果您的列表大小为n您将拥有O(n)个这样的列表来组成 - 这是无法实现的。

虽然你可以做的一件事情就是懒洋洋地计算出来,这样下一个列表将只在你试图访问它时计算出来。在这个例子中使用一个发电机是非常简单的:

def compose_lists(lst): 
    for i in range(len(lst)-2): 
     yield lst[i:i+3] 
+0

难道你不能只是改变'[...]'到'(...)'来将问题中的代码转换成一个生成器,而不是完全重写它? –

+0

这正是我想念的! –