でminまたはmaxの値のインデックス検索:各タプルの最初の項目は範囲のリストである、と私はしたい私は、フォームの構造持っているPythonの
>>> items
[([[0, 1], [2, 20]], 'zz', ''), ([[1, 3], [5, 29], [50, 500]], 'a', 'b')]
を開始インデックスに基づいて昇順に範囲を提供するジェネレータを作成します。
範囲リストは既に開始インデックスによってソートされているので、この操作は簡単です。ソートされたマージだけです。私は良い計算効率でそれを行うことを望んでいるので、私は暗黙のうちに私のマージの状態を追跡する良い方法の1つは、その開始インデックスが最も小さいタプルのリストの先頭から範囲リスト。
min()
を使用して、私が最初に望むのは[0, 1]
ですが、どのようにインデックスを取得できますか?
私はこれを持っている:私は、その後min()
何とか以上、それはリストの一回いずれも失敗することができ、各リストに私の最初の項目を与える空になり、またそれがどのようにはっきりしていない
[ min (items[i][0]) for i in range(len(items)) ]
索引をpop()
で使用するには、リスト内でバックアップを探す必要はありません。
要約すると:私のために返すジェネレータを構築したい:
([0,1], 'zz', '')
([1,3], 'a', 'b')
([2,20], 'zz', '')
([5,29], 'a', 'b')
([50,500], 'a', 'b')
、あるいはより効率的に、私はこれだけのデータが必要になります。
[0, 1, 0, 1, 1]
(私がしたいタプルのインデックス
私は前の回答のために[ 'mergeiter'機能](http://stackoverflow.com/a/14465236)を書きました。 'enumerate()'でインデックスを追加します。 –
@MartijnPieters Pythonでかなり緑色だったので、私は最初にあなたの 'mergeiter'関数をgrokkingしていました。しかし、これらの他の答えを見て、あなたのアプローチは明らかに正しいタイプです。しかし、それは答えとして投稿されていない唯一のものです... –