C#でシーケンスをマージする方法:Zipメソッドの使い方を解説
C#では、Zipメソッドを使うことで、2つのシーケンス(配列やコレクション)を簡単に1つに結合できます。この記事では、整数型の配列と文字列型の配列をZipメソッドでマージし、新しいシーケンスを作成する方法を具体的なコード例とともに解説します。
マージする2つのシーケンスを用意する
まず、結合対象となる2つの配列を定義しましょう。
整数型の配列
int[] intArray = { 1, 2, 3, 4, 5, 6, 7, 8 };文字列型の配列
string[] stringArray = { "Depp", "Cruise", "Pitt", "Clooney", "Sandler", "Affleck", "Tarantino" };Zipメソッドでシーケンスをマージする
2つのシーケンスを結合するには、LINQのZipメソッドを使用します。Zipメソッドは、2つのシーケンスの要素を位置ごとにペアリングし、引数として渡したラムダ式に従って新しい要素を生成します。
今回の例では、整数と文字列をスペースで区切って連結するラムダ式を指定します。
var mergedSeq = intArray.AsQueryable().Zip(stringArray, (one, two) => one + " " + two);
それでは、プログラム全体のコードを見てみましょう。
サンプルコード全体
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
int[] intArray = { 1, 2, 3, 4, 5, 6, 7, 8 };
string[] stringArray = { "Depp", "Cruise", "Pitt", "Clooney", "Sandler", "Affleck", "Tarantino" };
var mergedSeq = intArray.AsQueryable().Zip(stringArray, (one, two) => one + " " + two);
foreach (var ele in mergedSeq)
Console.WriteLine(ele);
}
}実行結果
1 Depp 2 Cruise 3 Pitt 4 Clooney 5 Sandler 6 Affleck 7 Tarantino
Zipメソッドのポイント
- Zipメソッドは、2つのシーケンスの要素をインデックス順にペアリングして処理します。
- どちらか一方のシーケンスが終端に達すると、マージ処理も終了します。上記の例では、文字列配列が7要素のため、出力も7行になっています。
- ラムダ式の中身を変更すれば、数値の合計や文字列のフォーマットなど、任意の結合ルールを自由に定義できます。
このように、Zipメソッドを活用すれば、異なる型のシーケンスでも柔軟にマージできるため、データの組み合わせ処理に非常に便利です。
-
Pythonでマージソートを実装する方法を徹底解説!サンプルコード付き
この記事では、マージソート(Merge Sort)のアルゴリズムを使って配列を並べ替えるPythonプログラムについて、実際のコード例を交えながら詳しく解説します。 問題設定 課題 − 与えられた配列を、マージソートの考え方を用いて昇順に並べ替えます。 マージソートは分割統治法に基づく整列アルゴリズムです。まず配列を半分ずつ再帰的に分割し、要素が1つになった時点でそれを「ソート済み」とみなします。その後、隣り合う部分配列同士を先頭から比較しながら統合(マージ)していくことで、最終的に配列全体が整列されます。 Pythonでの実装例 # マージ関数 def merge(arr, l, m,
-
【Python】再帰を使わない反復型(ボトムアップ)マージソートの実装方法を解説
この記事では、反復処理(イテレーション)のみでマージソートを実装する方法について解説します。再帰呼び出しを使わずに、whileループだけで配列を整列させる「ボトムアップ方式」のアプローチを見ていきましょう。 問題文 問題: 与えられた配列を、反復処理によるマージソートの考え方を用いて昇順に並べ替えてください。 例として、次の整数配列を扱います。 a = [2, 5, 3, 8, 6, 5, 4, 7] 反復マージソートの考え方 通常のマージソートは再帰を使って配列を分割しますが、反復版では最初から要素数1の部分配列として捉え、隣接する部分配列同士を統合(マージ)しながらサイズを倍々に増やしてい