めんどくさがり屋のために
LINQ用に用意された標準の拡張メソッドは普通に使っても結構便利。
Pythonの組み込み関数の知識も貧弱だったので,あわせて勉強してみた。メモりんこ。
>>> map( lambda x: pow( 2, x ), data ) [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
List<int> data = new List<int>{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //List<int> result = new List<int>(); //data.ForEach( // (x) => result.Add( (int)Math.Pow( 2, x ) ) ); var result = data.Select( (x => (int)Math.Pow( 2, x )) ).ToList(); result.ForEach( Console.WriteLine );
お次はフィルタ。
>>> filter( lambda x: (x % 2) == 0, data ) [0, 2, 4, 6, 8, 10]
var result = data.Where( (x => (x % 2) == 0) ).ToList(); //var result = // ( from x in data // where (x % 2) == 0 // select x ).ToList(); result.ForEach( Console.WriteLine );
Pythonのset型というものを初めて知りました・・・
# 以下は和集合と積集合のサンプル
>>> data1 = set( [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] ) >>> data2 = set( [5,20,65,3,1,0] ) >>> data1.union( data2 ) set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 65]) >>> data1.intersection( data2 ) set([5, 3, 1, 0])
List<int> data1 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; List<int> data2 = new List<int> { 5, 20, 65, 3, 1, 0 }; var result1 = data1.Union( data2 ).ToList(); result1.ForEach( Console.WriteLine ); Console.WriteLine(); var result2 = data1.Intersect( data2 ).ToList(); result2.ForEach( Console.WriteLine );
最終要素の取得
data[ -1 ]
Console.WriteLine( data.Last() );
生成してたもれ。
>>> range( 50 ) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
var sequence = Enumerable.Range( 0, 50 ); sequence.ToList().ForEach( Console.WriteLine );
C#を使ったプログラミング入門的な授業があって「これらのデータの平均値を求めなさい」という課題が出た場合,
これからの時代(?)は
var result = data.Average();
と書いて提出しましょう!!
ちなみに僕は去年のJavaの授業の「ソートして出力しろ!」という課題でsortメソッドを使って提出したことが(^^ *1
# 以後,課題のプリントに「※自分で実装すること」と書かれてしまった。 ライブラリの存在意義って何?!><