の最初の要素私は、xは、新しいリスト内の特定の値(x、y)の全ての数字は、そのリストをスライスするフォームリストをスライスするPythonicの方法w.r.t.タプル
x =
[(0,1), (0,2), (0,3), ...
(1,1), (1,3), (1,4), ...
...
(n,0), (n,4), ...
]
の組のソートされたリストを持っていると注文は保持されます。今、これは明らかにうまくいくでしょう:
y = [(a,b) for (a,b) in x if a == n]
しかし、それは本当に遅いです。バイナリ検索でこの条件を満たす最初と最後のインデックスを見つける方が早いでしょう。 index
は値の最初のインデックスを返し、逆リストのindex
は最後のインデックスを返します。 [a for (a,b) in x]
を実行してリスト全体をコピーすることなく、どのように適用しますか?
_ordered_リストを仮定することはできないので、 'index'はおそらくバイナリ検索をしませんが、リストのトラバーサルなので、はるかに速くなるのではないでしょうか。 –
ソートされたリストを処理する方法として[bisect](https://docs.python.org/3/library/bisect.html#searching-sorted-lists)の使用を検討してください。 –
開始位置と終了位置を知った後、リスト内の部分範囲(スライス)にアクセスする方法については、http://stackoverflow.com/questions/509211/explain-pythons-slice-notationまたはhttps://docs.pythonを参照してください。 .org/2/tutorial/introduction.html#strings –