コレクションをソートして取り出す際にインデックスつける
コレクションから要素を取り出していく際に、連番をつけたいことがあります。
例えば下記のような文字列の配列を、ソートしてインデックスとともに要素を取得したい、といった場合のTipsです。
"Banana", "Apple", "Melon"
ソートし取り出す際にインデックスつける
C#
C# の場合は、 Selectメソッドにオーバーロードがあり、それを用いることで実現できます。
string[] fruits = { "Banana", "Apple", "Melon" }; foreach(var item in fruits.OrderBy(n => n).Select((v, i) => new {v, i})) { Console.WriteLine($"{item.i} {item.v}"); }
0 Apple 1 Banana 2 Melon
Python
Pythonでは 組み込み関数である enumerate を使います。 enumerateはインデックスと要素をタプルで返してくれます。
fruits = ["Banana", "Apple", "Melon"] for index , item in enumerate(sorted(fruits)): print(index, item)
0 Apple 1 Banana 2 Melon
いずれも、シンプルに実装できますね。