リスト、タプル、セット、辞書の基本操作 | コレクションとデータ構造 | JavaプログラマのためのPython入門

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

リスト、タプル、セット、辞書の基本操作

この記事では、Pythonにおける代表的なデータ構造であるリスト、タプル、セット、辞書の基本操作について解説します。Javaの知識を持つプログラマ向けに、それぞれのデータ構造がどのように使われるか、Javaとの違いに焦点を当てて説明します。

リスト(List)

Pythonのリストは、JavaのArrayListに相当します。リストは可変長で、任意の型の要素を持つことができ、順序が維持されます。

# Pythonのリスト操作の例
fruits = ["apple", "banana", "cherry"]

# 要素の追加
fruits.append("orange")

# 要素の削除
fruits.remove("banana")

# 要素のアクセス
print(fruits[0])  # apple

# リストのループ
for fruit in fruits:
    print(fruit)

上記の例では、リストに対する基本操作(追加、削除、アクセス、ループ)を行っています。Pythonのリストはシンプルに操作でき、動的にサイズが変わる点が特徴です。

Javaのリスト

Javaでは、リストを操作するためにArrayListクラスがよく使われます。以下に、同様の操作をJavaで実装した例を示します。

// Javaのリスト操作の例
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList fruits = new ArrayList<>();
        fruits.add("apple");
        fruits.add("banana");
        fruits.add("cherry");

        // 要素の追加
        fruits.add("orange");

        // 要素の削除
        fruits.remove("banana");

        // 要素のアクセス
        System.out.println(fruits.get(0));  // apple

        // リストのループ
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

Javaのリスト操作は、Pythonと似ていますが、ArrayListを明示的に使用し、get()メソッドで要素にアクセスします。

タプル(Tuple)

Pythonのタプルは、変更不可なリストのようなデータ構造です。要素の順序は保持され、読み取り専用のデータを格納するのに適しています。

# Pythonのタプル操作の例
fruits = ("apple", "banana", "cherry")

# 要素のアクセス
print(fruits[1])  # banana

# タプルのループ
for fruit in fruits:
    print(fruit)

タプルは不変(immutable)であるため、要素の追加や削除はできません。読み取り専用のデータに適しています。

Javaの類似構造

Javaにはタプルに対応する標準クラスはありませんが、Collections.unmodifiableList()を使って不変のリストを作成することで、タプルに似た動作を再現できます。

// Javaの不変リストの例
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List fruits = List.of("apple", "banana", "cherry");

        // 要素のアクセス
        System.out.println(fruits.get(1));  // banana

        // リストのループ
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

Javaで不変のコレクションを作るには、List.of()メソッドを使用します。これはタプルの代替として機能します。

セット(Set)

Pythonのセットは、重複しない要素を格納し、順序を保持しないデータ構造です。集合演算が可能で、JavaのHashSetに相当します。

# Pythonのセット操作の例
fruits = {"apple", "banana", "cherry"}

# 要素の追加
fruits.add("orange")

# 要素の削除
fruits.remove("banana")

# 要素の存在確認
print("apple" in fruits)  # True

# セットのループ
for fruit in fruits:
    print(fruit)

セットは、重複した要素を保持しない点が特徴で、効率的な集合操作が可能です。

Javaのセット

Javaでは、HashSetクラスを使ってセットを操作します。以下は同様の操作をJavaで実装した例です。

// Javaのセット操作の例
import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        HashSet fruits = new HashSet<>();
        fruits.add("apple");
        fruits.add("banana");
        fruits.add("cherry");

        // 要素の追加
        fruits.add("orange");

        // 要素の削除
        fruits.remove("banana");

        // 要素の存在確認
        System.out.println(fruits.contains("apple"));  // True

        // セットのループ
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

Javaでは、HashSetを使って同様のセット操作を行い、contains()メソッドで要素の存在を確認します。

辞書(Dictionary / Map)

Pythonの辞書(dict)は、キーと値のペアを格納するデータ構造で、JavaのHashMapに相当します。

# Pythonの辞書操作の例
fruits = {"apple": 1, "banana": 2, "cherry": 3}

# 要素の追加
fruits["orange"] = 4

# 要素の削除
del fruits["banana"]

# 要素のアクセス
print(fruits["apple"])  # 1

# 辞書のループ
for key, value in fruits.items():
    print(f"{key}: {value}")

Pythonの辞書では、キーと値のペアを操作でき、items()メソッドを使ってキーと値の両方をループで取得できます。

Javaのマップ

Javaでは、HashMapクラスを使って同様のキーと値の操作を行います。

// Javaの辞書操作の例
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap fruits = new HashMap<>();
        fruits.put("apple", 1);
        fruits.put("banana", 2);
        fruits.put("cherry", 3);

        // 要素の追加
        fruits.put("orange", 4);

        // 要素の削除
        fruits.remove("banana");

        // 要素のアクセス
        System.out.println(fruits.get("apple"));  // 1

        // 辞書のループ
        for (String key : fruits.keySet()) {
            System.out.println(key + ": " + fruits.get(key));
        }
    }
}

Javaでは、HashMapを使って辞書操作を行い、put()get()メソッドで要素を追加・取得します。

PythonとJavaのデータ構造の比較

以下の表で、PythonとJavaのデータ構造における主な違いを示します。

項目 Java Python
リスト ArrayList list
タプル 標準対応なし(List.of()で代替) tuple
セット HashSet set
辞書 HashMap dict

ステップバイステップでデータ構造を操作する方法

  1. リスト、セット、辞書などのデータ構造を作成します。
  2. 必要に応じて要素を追加、削除、アクセスします。
  3. データを操作したら、ループを使って要素を処理します。

まとめ

この記事では、PythonとJavaのデータ構造(リスト、タプル、セット、辞書)の基本操作について解説しました。Pythonでは、各データ構造がシンプルに操作でき、動的に扱える特徴があります。Javaとの違いを理解し、適切なデータ構造を使いこなすことで、効率的なプログラムを作成しましょう。