C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でListの要素を反転する方法|リスト全体・指定範囲の順序を逆にする

C#の List<T> クラスには、要素の並び順を逆にするための Reverse() メソッドが用意されています。このメソッドには2つの使い方があります。

  • Reverse() … リスト内のすべての要素の順序を反転します
  • Reverse(int index, int count) … 指定したインデックスから指定した個数分の要素だけを反転します

以下、それぞれの使い方をサンプルコードとともに解説します。

例1:指定した範囲の要素を反転する(Reverse(int index, int count))

まずは、インデックス2から4つの要素を反転する例です。文字列のListを作成し、列挙子(Enumerator)で全要素を表示した後、Reverse(2, 4) を呼び出して一部だけを逆順にしています。

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main(String[] args) {
      List<String> list = new List<String>();
      list.Add("One");
      list.Add("Two");
      list.Add("Three");
      list.Add("Four");
      list.Add("Five");
      list.Add("Six");
      list.Add("Seven");
      list.Add("Eight");
      Console.WriteLine("Enumerator iterates through the list elements...");
      List<string>.Enumerator demoEnum = list.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }
      list.Reverse(2, 4);
      Console.WriteLine("Elements in ArrayList2...Reversed 4 elements beginning from index 2");
      foreach (string res in list) {
         Console.WriteLine(res);
      }
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。インデックス2〜5の「Three」「Four」「Five」「Six」が「Six」「Five」「Four」「Three」と入れ替わっているのがわかります。

Enumerator iterates through the list elements...
One
Two
Three
Four
Five
Six
Seven
Eight
Elements in ArrayList2...Reversed 4 elements beginning from index 2
One
Two
Six
Five
Four
Three
Seven
Eight

例2:リスト全体の要素を反転する(Reverse())

続いて、引数なしの Reverse() を使って、リスト全体の順序を逆にする例です。今度は整数型(int)のListを使用しています。

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main(String[] args) {
      List<int> list = new List<int>();
      list.Add(5);
      list.Add(10);
      list.Add(20);
      list.Add(50);
      list.Add(100);
      Console.WriteLine("Enumerator iterates through the list elements...");  
      List<int>.Enumerator demoEnum = list.GetEnumerator();
      while (demoEnum.MoveNext()) {
         int res = demoEnum.Current;
         Console.WriteLine(res);
      }
      list.Reverse();
      Console.WriteLine("Elements in List...Reversed");
      foreach (int i in list) {
         Console.WriteLine(i);
      }
   }
}

出力結果

実行すると、すべての要素が逆順に並び替えられていることが確認できます。

Enumerator iterates through the list elements...
5
10
20
50
100
Elements in List...Reversed
100
50
20
10
5

まとめ

  • Reverse():リスト全体の要素を逆順にします
  • Reverse(index, count):index番目からcount個の要素のみを逆順にします

なお、Reverseメソッドは元のリスト自体を変更する(破壊的メソッドである)点に注意してください。元のリストを保持したい場合は、あらかじめコピーを作成しておくか、LINQの Enumerable.Reverse() を利用するとよいでしょう。

  1. C#でListの要素範囲を取得する方法:GetRange()メソッドの使い方

    C#のListで特定の範囲の要素を取得するには、GetRange() メソッドを使用します。このメソッドは、指定したインデックス位置から指定した数の要素を取り出し、新しいリストとして返します。 GetRange() メソッドの基本構文 public List<T> GetRange(int index, int count); index:取得を開始する要素のインデックス(0から始まります) count:取得する要素の数 リストの作成と要素の追加 まず、リストを作成して要素を追加します。 List<int> arr1 = new List<int>();

  2. Pythonで配列(リスト)の要素を逆順に出力するプログラム

    Pythonでリストの要素を逆順に出力したい場合、リストを末尾から先頭へ向かって反復処理することで実現できます。range() 関数に開始位置・終了位置・ステップを指定すれば、簡単に逆順のループを作成可能です。 サンプルコード my_list = [21, 32, 43, 54, 75] print(元のリスト : ) for i in range(0, len(my_list)): print(my_list[i]) print(逆順にした後のリスト : ) for i in range(len(my_list)-1, -1, -1): print(my_list[i]) 出