【超解説】Python配列プログラミング:3種類の特徴と操作方法をマスター!
- リスト(list):最も汎用的な配列で、様々なデータ型を要素として格納できます。要素の追加、削除、変更などが自由に行えます。
# リストの作成
numbers = [1, 2, 3, 4, 5]
strings = ["Hello", "Python", "World!"]
mixed_data = [1, "Data", 3.14]
# リスト要素へのアクセス
print(numbers[0]) # 1を出力
print(strings[2]) # "World!"を出力
print(mixed_data[1]) # "Data"を出力
# リスト要素の操作
numbers[1] = 10
mixed_data.append(True)
print(numbers) # [1, 10, 3, 4, 5]
print(mixed_data) # [1, "Data", 3.14, True]
- タプル(tuple): リストと似ていますが、要素の変更や削除ができないという特徴があります。一度決めた要素は固定されます。
# タプルの作成
numbers = (1, 2, 3, 4, 5)
strings = ("Hello", "Python", "World!")
mixed_data = (1, "Data", 3.14, True)
# タプル要素へのアクセス(リストと同様)
print(numbers[0]) # 1を出力
print(strings[2]) # "World!"を出力
print(mixed_data[1]) # "Data"を出力
# タプル要素の操作(エラーが発生)
# numbers[1] = 10 # TypeError: 'tuple' object does not support item assignment
- NumPy配列: 科学計算やデータ分析に特化した高性能な配列です。数値演算やデータ処理に特化した機能が豊富に備わっています。
# NumPyライブラリのインポート
import numpy as np
# NumPy配列の作成
array = np.array([1, 2, 3, 4, 5])
# NumPy配列の要素へのアクセス(リストと同様)
print(array[0]) # 1を出力
# NumPy配列特有の機能
print(array * 2) # [2 4 6 8 10]
print(np.sin(array)) # [0.84147098 0.90631781 0.98480794 0.99847712 1. ]
上記の基本的なデータ型に加え、Pythonには配列を操作するための便利な機能が豊富に用意されています。
- ソート:
array.sort()
- 配列の連結:
array1 + array2
- 要素の型変換:
array.astype(dtype)
- 部分配列の取得:
array[start:end]
- 要素の挿入:
array.insert(index, element)
- 要素の削除:
array.remove(element)
- 要素の追加:
array.append(element)
- リストの長さ取得:
len(array)
これらの機能を組み合わせることで、複雑なデータ操作も効率的に行うことができます。
Pythonにおける配列は、データの集合を扱うための基本的なプログラミング要素です。
リスト操作
# リストの作成
numbers = [1, 2, 3, 4, 5]
# リストの長さ取得
print(len(numbers)) # 5を出力
# 要素の追加
numbers.append(6)
print(numbers) # [1, 2, 3, 4, 5, 6]
# 特定の要素の削除
numbers.remove(3)
print(numbers) # [1, 2, 4, 5, 6]
# 要素の挿入
numbers.insert(2, 3.14)
print(numbers) # [1, 2, 3.14, 4, 5, 6]
# 部分配列の取得
sublist = numbers[1:4]
print(sublist) # [2, 3.14, 4]
# 要素の型変換
string_numbers = [str(n) for n in numbers]
print(string_numbers) # ['1', '2', '3.14', '4', '5', '6']
# リストの連結
another_list = [7, 8, 9]
combined_list = numbers + another_list
print(combined_list) # [1, 2, 3.14, 4, 5, 6, 7, 8, 9]
# リストのソート
numbers.sort()
print(numbers) # [1, 2, 3.14, 4, 5, 6]
タプル操作
# タプルの作成
numbers = (1, 2, 3, 4, 5)
# タプルの要素へのアクセス(リストと同様)
print(numbers[0]) # 1を出力
# タプルの長
print(len(numbers)) # 5を出力
# タプルの要素は変更できない
# numbers[1] = 10 # TypeError: 'tuple' object does not support item assignment
# 部分タプルの取得
subtuple = numbers[1:4]
print(subtuple) # (2, 3, 4)
# タプルの連結
another_tuple = (6, 7, 8)
combined_tuple = numbers + another_tuple
print(combined_tuple) # (1, 2, 3, 4, 5, 6, 7, 8)
# タプルはソートできない
# numbers.sort() # TypeError: 'tuple' object has no attribute 'sort'
# NumPyライブラリのインポート
import numpy as np
# NumPy配列の作成
array = np.array([1, 2, 3, 4, 5])
# NumPy配列の長さ
print(len(array)) # 5を出力
# 要素の追加
array = np.append(array, 6)
print(array) # [1 2 3 4 5 6]
# 特定の要素の削除
array = array[array != 3]
print(array) # [1 2 4 5 6]
# 要素の挿入
array = np.insert(array, 2, 3.14)
print(array) # [1 2 3.14 4 5 6]
# 部分配列の取得
subarray = array[1:4]
print(subarray) # [ 2 3.14 4]
# 要素の型変換
string_array = array.astype(str)
print(string_array) # ['1' '2' '3.14' '4' '5' '6']
# NumPy配列の連結
another_array = np.array([7, 8, 9])
combined_array = np.concatenate((array, another_array))
print(combined_array) # [1 2 3.14 4 5 6 7 8 9]
# NumPy配列のソート
array.sort()
print(array) # [1 2 3.14 4 5 6]
# 数学演算
print(array * 2) # [ 2 4 6.28
リスト (list)
- 以下のような操作に適しています。
- 動的なデータ集合の操作
- 要素の追加や削除が頻繁に行われる場合
- 比較的単純なデータ構造
- メモリ効率が比較的良い。
- 要素の追加、削除、変更などが自由に行えます。
- 最も汎用的な配列で、様々なデータ型を要素として格納できます。
# リストの作成
numbers = [1, 2, 3, 4, 5]
strings = ["Hello", "Python", "World!"]
mixed_data = [1, "Data", 3.14, True]
タプル (tuple)
- 以下のような操作に適しています。
- 不変のデータ集合を表す
- 要素の変更や削除を行わないデータ構造
- キーと値のペアを表す (辞書との併用)
- メモリ効率が良く、リストよりも高速に処理できる場合があります。
- リストと似ていますが、要素の変更や削除ができないという特徴があります。一度決めた要素は固定されます。
# タプルの作成
numbers = (1, 2, 3, 4, 5)
strings = ("Hello", "Python", "World!")
mixed_data = (1, "Data", 3.14, True)
NumPy配列
- 以下のような操作に適しています。
- 数値計算やデータ分析
- 科学技術・機械学習・画像処理
- 高速なデータ処理が必要な場合
- リストやタプルよりも高速な処理が可能ですが、メモリ使用量が多くなります。
- 科学計算やデータ分析に特化した高性能な配列です。数値演算やデータ処理に特化した機能が豊富に備わっています。
# NumPyライブラリのインポート
import numpy as np
# NumPy配列の作成
array = np.array([1, 2, 3, 4, 5])
- pandasライブラリのデータフレーム: 表形式のデータ構造で、統計分析やデータ操作に特化した機能が豊富に備わっています。
- collections モジュールのデータ構造: キュー、デック、OrderedDictなど、特定の目的に適したデータ構造を提供しています。
最適な配列の選択
用途や目的に合わせて、適切な配列を選択することが重要です。
- 特定の目的に特化したデータ構造が必要な場合は、collectionsモジュールやpandasライブラリなどを検討しましょう。
- 科学計算やデータ分析を行う場合はNumPy配列が適しています。
- 不変のデータ集合を表したい場合はタプルが適しています。
- データの変更頻度が高い場合はリストが適しています。
以下は、それぞれの配列の利点と欠点の表です。
種類 | 利点 | 欠点 | 適した用途 |
---|---|---|---|
リスト | 汎用性が高い、要素の操作が自由 | メモリ効率がやや悪い | 動的なデータ集合の操作 |
タプル | 不変性、高速処理 | 要素の変更・削除不可 | 不変のデータ集合 |
NumPy配列 | 高速処理、科学計算に特化 | メモリ使用量が多い | 科学計算、データ分析 |
collectionsモジュールのデータ構造 | 特定目的に特化 | 種類によって異なる | キュー、デック、OrderedDictなど |
pandasライブラリのデータフレーム | 表形式データ、統計分析に特化 | 複雑な構造 | データ分析、データ可視化 |