2017-12-03 3 views
0

このように使うことができます[a[i:i+3], for i in range()]。 しかし、aが大きいときは、CPUリソースが多すぎるため、このボトルネックをどのように解決できますか?python変換リスト[0,1,2,3,4,5]を[0,1,2]、[1,2,3]、[2,3,4]

+0

あなたのリストはどんなものになりますか?整数または文字列の組み合わせのみ?最適なヘルプのために、可能なリスト要素を指定してください。 – Gahan

+0

私は2種類のリストを持っています。浮動小数点の整数とリスト –

+0

これらのリストを使用して解決しようとしている、より大きな問題のコンテキストをバックアップして説明することができます。多分大規模なデータ構造を構築する必要のない提案を提供することができます。 –

答えて

4

リストのサイズがnの場合は、O(n)個のリストを作成する必要があります。その周りには方法はありません。

あなたができることの1つは、遅れて計算することです。この方法では、次のリストは、アクセスしようとしたときにのみ計算されます。この例のジェネレータを使用するとかなり簡単です:

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

コードを質問からジェネレータに変換するために '[...]'を '(...)'に変更しただけでは、完全に書き換えられませんでしたか? –

+0

これはまさに私が恋しいことです! –

関連する問題