【Python 組み込み関数】list(), tuple(), set() の違いと基本的な使い方を徹底解説!

Python

はじめに:list(), tuple(), set() はデータ集約の基本!

Pythonプログラミングを学ぶ上で、複数のデータをまとめて扱う場面は非常に多くあります。その際に活躍するのが、リスト(list)タプル(tuple)セット(set) といったデータ構造です。

これらは似ているように見えますが、それぞれに明確な特徴と役割があります。

この記事を読めば、Pythonの組み込み関数 list(), tuple(), set() の基本的な使い方と、それぞれの違いを正しく理解し、状況に応じて適切に使い分けられるようになります。

list() の使い方:柔軟に編集できるデータの入れ物

list() とは? – 変更可能なシーケンス

list() は、**変更可能(ミュータブル)**なシーケンスを作成する組み込み関数です。リストは [] を使って作成することもできます。後から要素を追加、変更、削除できるため、非常に柔軟性が高いのが特徴です。

list() の基本的な使い方

list() 関数は、文字列やタプルなど、反復可能なオブジェクト(イテラブル)を引数に渡すことで、新しいリストを作成します。

# 文字列をリストに変換
char_list = list('hello')
print(char_list)
# 出力: ['h', 'e', 'l', 'l', 'o']

# タプルをリストに変換
my_tuple = (1, 2, 3)
my_list = list(my_tuple)
print(my_list)
# 出力: [1, 2, 3]

作成したリストは、後から要素を自由に変更できます。

# 要素の追加 (append)
my_list.append(4)
print(my_list)
# 出力: [1, 2, 3, 4]

# 要素の変更
my_list[0] = 100
print(my_list)
# 出力: [100, 2, 3, 4]

他のデータ型からリストを作成する方法

list() 関数を使うと、様々なデータ型からリストを簡単に作れます。これは、データを加工したり、特定の処理を行う前準備として非常によく使われるテクニックです。

# rangeオブジェクトからリストを作成
numbers = list(range(5))
print(numbers)
# 出力: [0, 1, 2, 3, 4]

# セットからリストを作成(順序は保証されない)
my_set = {10, 30, 20}
set_to_list = list(my_set)
print(set_to_list)
# 出力例: [10, 20, 30]

tuple() の使い方:変更させたくないデータを守る

tuple() とは? – 変更不可能なシーケンス

tuple() は、**変更不可能(イミュータブル)**なシーケンス、つまりタプルを作成する組み込み関数です。タプルは () を使って作成することもできます。一度作成すると、要素の追加や変更、削除ができません。

tuple() の基本的な使い方

tuple() の使い方は list() と非常によく似ています。イテラブルなオブジェクトを引数に渡してタプルを作成します。

# 文字列をタプルに変換
char_tuple = tuple('world')
print(char_tuple)
# 出力: ('w', 'o', 'r', 'l', 'd')

# リストをタプルに変換
my_list = [10, 20, 30]
my_tuple = tuple(my_list)
print(my_tuple)
# 出力: (10, 20, 30)

一度作成したタプルの要素を変更しようとすると、エラーが発生します。

# my_tuple[0] = 100 # この行は TypeError となります

なぜタプルを使うのか?メリットを解説

変更できないタプルには、明確なメリットがあります。

  • データの安全性が高い: プログラムの途中で意図せず値が書き換わるのを防ぎます。定数のように扱いたい値の集まりに最適です。
  • パフォーマンス: 一般的に、リストよりもタプルの方がメモリ消費量が少なく、処理速度も若干速いとされています。
  • 辞書のキーとして使える: リストは変更可能であるため辞書のキーにはなれませんが、タプルは変更不可能なのでキーとして使用できます。

set() の使い方:重複しないユニークな値の集合

set() とは? – 順序がなく重複を許さないコレクション

set() は、重複する要素を持たない順序のないコレクション(集合)を作成する組み込み関数です。セットは {} を使って作成することもできます(ただし、空のセットは set() で作成します)。

set() の基本的な使い方

set() も同様に、イテラブルなオブジェクトからセットを生成します。もし元のデータに重複する要素があっても、セットにすると自動的にユニークな値だけが残ります。

# 重複のあるリストからセットを作成
my_list = [1, 2, 2, 3, 4, 4, 4]
my_set = set(my_list)
print(my_set)
# 出力: {1, 2, 3, 4}

# 文字列からセットを作成
my_string = 'hello'
my_set_str = set(my_string)
print(my_set_str)
# 出力: {'e', 'h', 'l', 'o'}

重複を簡単に削除するテクニック

set() の「重複を許さない」という特性は、リストなどから重複した要素を効率的に取り除きたい場合に非常に役立ちます。

# メールアドレスリストから重複を削除する例
email_list = [
    'user@example.com',
    'admin@example.com',
    'user@example.com' # 重複
]

# セットに変換してからリストに戻す
unique_emails = list(set(email_list))
print(unique_emails)
# 出力: ['admin@example.com', 'user@example.com']

一目でわかる!list, tuple, set の違い比較表

これら3つの特徴を比較表にまとめました。

特徴list (リスト)tuple (タプル)set (セット)
記法[](){}
順序ありありなし
変更可能性可能(ミュータブル)不可能(イミュータブル)可能(ミュータブル)
重複要素許可許可不許可
主な用途柔軟なデータ操作定数、辞書のキー重複除去、集合演算

Google スプレッドシートにエクスポート

型変換の具体例:相互に変換する方法

list(), tuple(), set() を使うことで、これらのデータ型を自由に行き来できます。

リスト(list) をタプル(tuple)やセット(set)に変換

my_list = [1, 2, 3, 3]

# リスト -> タプル
list_to_tuple = tuple(my_list)
print(f"タプルに変換: {list_to_tuple}")
# 出力: タプルに変換: (1, 2, 3, 3)

# リスト -> セット
list_to_set = set(my_list)
print(f"セットに変換: {list_to_set}")
# 出力: セットに変換: {1, 2, 3}

タプル(tuple) をリスト(list)やセット(set)に変換

my_tuple = (10, 20, 30, 20)

# タプル -> リスト
tuple_to_list = list(my_tuple)
print(f"リストに変換: {tuple_to_list}")
# 出力: リストに変換: [10, 20, 30, 20]

# タプル -> セット
tuple_to_set = set(my_tuple)
print(f"セットに変換: {tuple_to_set}")
# 出力: セットに変換: {10, 20, 30}

セット(set) をリスト(list)やタプル(tuple)に変換

my_set = {100, 200, 300}

# セット -> リスト
set_to_list = list(my_set)
print(f"リストに変換: {set_to_list}")
# 出力例: リストに変換: [100, 200, 300]

# セット -> タプル
set_to_tuple = tuple(my_set)
print(f"タプルに変換: {set_to_tuple}")
# 出力例: タプルに変換: (100, 200, 300)

まとめ:それぞれの特徴を理解して使い分けよう

今回は、Pythonの基本的な組み込み関数 list(), tuple(), set() について解説しました。

  • list(): 順序があり、変更可能。要素の追加や変更が頻繁に必要な場合に使う。
  • tuple(): 順序があり、変更不可能。固定された値の組や、データの安全性を保ちたい場合に使う。
  • set(): 順序がなく、重複を許さない。ユニークな要素だけを管理したい場合や、重複除去に使う。

これらの特性をしっかり理解し、プログラムの目的に合わせて最適なデータ型を選択することが、効率的でバグの少ないコードを書くための第一歩です。ぜひ、実際にコードを書きながらそれぞれの挙動を試してみてください。

コメント

タイトルとURLをコピーしました