2

Python でイベント カレンダーを作成する必要があります。これにより、イベントを任意の位置に貼り付けることができ、FIFO (左側から要素をポップ) として機能します。

Python collections.deque は FIFO として効率的に機能しますが、現在の要素の間に要素を貼り付けることはできません。

一方、Python の list は途中に挿入できますが、popleft は非効率的です。

では、妥協点はありますか?

UPDそのような構造は、おそらくキューよりもリンクされたリストに近いでしょう。タイトル変更。

4

3 に答える 3

2

をご覧いただけますblist。彼らのウェブサイトから引用:

blist は Python リストのドロップイン置換であり、大きなリストを変更する際により優れたパフォーマンスを提供します。

...

以下は、blist がビルトイン リストよりも漸近的に優れているユース ケースの一部です。

Use Case                                      blist              list
--------------------------------------------------------------------------
Insertion into or removal from a list         O(log n)           O(n)
Taking slices of lists                        O(log n)           O(n)
Making shallow copies of lists                O(1)               O(n)
Changing slices of lists                      O(log n + log k)   O(n+k)
Multiplying a list to make a sparse list      O(log k)           O(kn)
Maintain a sorted lists with bisect.insort    O(log**2 n)        O(n)

ここにいくつかのパフォーマンス数値があります --> http://stutzbachenterprises.com/performance-blist

于 2013-07-17T11:31:58.223 に答える
2

ちょっとしたアイデア -heapqイベントのリストを維持するために使用できます。ヒープ内の要素の優先度/キーとして、イベントのタイムスタンプを使用できます。

于 2013-07-17T11:31:05.127 に答える