C#のSkipWhileメソッドとは?条件を満たす要素をスキップする使い方を解説
C#のLINQに含まれるSkipWhileメソッドは、指定した条件が満たされている間、シーケンス(配列やリストなど)の先頭から要素を読み飛ばすためのメソッドです。条件が初めて成立しなくなった時点で処理を止め、その要素以降のすべての要素を返します。
基本構文
例えば、「偶数の要素をすべてスキップしたい」場合は、次のようなラムダ式を条件として指定します。
ele => ele % 2 == 0
この条件式では、要素を2で割った余りが0(つまり偶数)である間、要素がスキップされます。
使用例:偶数をスキップして奇数だけを表示する
以下のサンプルコードでは、整数型の配列から偶数の要素をスキップし、残りの奇数の要素のみを出力しています。
using System.IO;
using System;
using System.Linq;
public class Demo {
public static void Main() {
int[] arr = { 20, 35, 55 };
Console.WriteLine("初期の配列...");
foreach (int value in arr) {
Console.WriteLine(value);
}
// 偶数の要素をスキップ
var res = arr.SkipWhile(ele => ele % 2 == 0);
Console.WriteLine("偶数をスキップした後の新しい配列...");
foreach (int val in res) {
Console.WriteLine(val);
}
}
}
実行結果
初期の配列... 20 35 55 偶数をスキップした後の新しい配列... 35 55
処理の流れを解説
この例では、配列 { 20, 35, 55 } の先頭から順に条件「ele % 2 == 0(偶数である)」が評価されます。
- 20 → 偶数なので条件を満たし、スキップされます。
- 35 → 奇数なので条件を満たさず、ここでスキップが終了します。
- 55 → 条件の評価に関係なく、以降の要素はすべてそのまま返されます。
そのため、結果として 35 と 55 のみが出力されます。
注意点
SkipWhileは「条件を満たす要素をすべて除外する」メソッドではなく、「条件を満たしている間だけ先頭から読み飛ばす」という挙動を持つ点に注意が必要です。途中で条件を満たさない要素が現れた場合、それ以降に条件を満たす要素があってもスキップされません。すべての偶数を除外したい場合は、Where(ele => ele % 2 != 0) のようなフィルタリングを使用します。
-
C#のCompareTo()メソッドの使い方を解説
C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数
-
Pythonでリスト内の連続する偶数要素を交換する方法
問題の概要数値のリスト nums が与えられたとき、「連続して現れる偶数」同士をペアごとに入れ替えることを考えます。たとえば、入力が nums = [4, 5, 6, 8, 10] の場合、出力は [6, 5, 4, 10, 8] となります。解法のアプローチこの問題は、一時変数を1つ用意するだけでシンプルに解決できます。手順は以下の通りです。一時変数 temp を None で初期化するi を 0 からリストの要素数まで順にループさせるnums[i] が偶数(2で割った余りが0)の場合:temp が None でなければ、nums[i] と nums[temp] を交換し、temp を No