Pythonの基本的なルール その4データ型

投稿日: 2024年2月3日

Pythonにはさまざまなデータ型があり、それぞれに基本的なルールと特性があります。以下では主要なデータ型を紹介し、それぞれについてサンプルコードを示します。

主要なデータ型

  1. 整数(int): 整数値を表します。負の数、ゼロ、正の数を含みます。
  2. 浮動小数点数(float): 小数点を含む数値を表します。
  3. 文字列(str): 文字のシーケンスを表します。シングルクォート(’)またはダブルクォート(”)で囲みます。
  4. リスト(list): 順序付けられた要素のコレクションです。ブラケット([])で囲み、コンマで要素を区切ります。
  5. タプル(tuple): 順序付けられた変更不可の要素のコレクションです。丸括弧(())で囲みます。
  6. 辞書(dict): キーと値のペアのコレクションです。波括弧({})で囲み、コロン(:)でキーと値を区切ります。
  7. ブール(bool): 真(True)または偽(False)のいずれかの値を取ります。

1.Pythonの整数(int)

Pythonの整数(int)は、数学の整数に対応するデータ型で、正または負の整数(ゼロを含む)を表現することができます。Python 3では、整数のサイズは理論上無限で、コンピュータのメモリの制限内で任意の大きさの数値を扱うことが可能です。これは、Pythonが内部的に数値を動的に管理し、必要に応じて数値の格納サイズを調整するためです。

基本的な使い方

整数を使用する基本は非常にシンプルです。直接数値を記述することで、整数値を変数に割り当てることができます。

# 整数の例
number = 10
print(number)  # 10

演算

整数に対しては、加算(+)、減算(-)、乗算(*)、除算(/)、整数除算(//)、剰余(%)、累乗(**)などの基本的な数学的演算が可能です。

a = 8 + 2   # 加算(結果: 10)
b = 8 - 2   # 減算(結果: 6)
c = 8 * 2   # 乗算(結果: 16)
d = 8 / 2   # 除算(結果: 4.0)除算の結果はfloatになる
e = 8 // 2  # 整数除算(結果: 4)
f = 8 % 2   # 剰余(結果: 0)
g = 8 ** 2  # 累乗(結果: 64)

2.浮動小数点数(float)

Pythonの浮動小数点数(float)は、実数を表現するためのデータ型です。これには、小数点を含む数値や、非常に大きな数値、非常に小さな数値(正確さを失う可能性がある)が含まれます。浮動小数点数は、コンピュータが実数を近似する方法に基づいており、IEEE 754標準に従って表現されます。

基本的な使い方

浮動小数点数を使用するには、数値に小数点を含めます。または、科学的表記法を使用して数値を指定することもできます。

x = 10.0
y = -3.14
z = 2.5e2  # 2.5 x 10^2 = 250.0
w = -4.2e-4  # -4.2 x 10^-4 = -0.00042

浮動小数点数の扱いにおける注意点

精度: 浮動小数点数は、多くの場合、完全に正確ではありません。これは、コンピュータが2進数(基数2)を使用して数値を内部的に表現するため、10進数で表される多くの小数点数は正確に2進数で表現できないからです。例えば、0.1 + 0.2が0.3と厳密には等しくないことがあります。

3.文字列(str)

Pythonの文字列(str)は、テキストデータを表すためのデータ型です。文字、単語、文、あるいはそれ以上の長さのテキストを格納し、操作することができます。文字列はイミュータブル(変更不可)なので、一度作成するとその内容を変更することはできませんが、新しい文字列を作成することは可能です。

基本的な使い方

文字列を作成するには、シングルクォート(')またはダブルクォート(")を使用します。複数行にわたる文字列を作成する場合は、トリプルクォート('''または""")を使用します。

s = 'Hello, World!'
t = "Python programming"
u = """これは
複数行にわたる
文字列です。"""

文字列の操作

Pythonには、文字列を操作するための豊富なメソッドが用意されています。以下はその一部です。

upper(): 文字列を大文字に変換します。
lower(): 文字列を小文字に変換します。
strip(): 文字列の両端から空白文字(スペース、タブ、改行など)を削除します。
split(sep=None): 文字列をsepで指定された区切り文字(指定しない場合は空白文字)で分割して、リストにして返します。
join(iterable): 指定したイテラブル(リストなど)の各要素を連結して、一つの文字列にします。
replace(old, new): 文字列内のoldをnewに置換します。
find(sub): 文字列内で部分文字列subが最初に現れる位置を返します。見つからない場合は-1を返します。

文字列のスライス

文字列の一部を取り出すには、スライスを使用します。スライスは[開始:終了:ステップ]の形式で指定します。

text = 'Hello, World!'
print(text[0:5])  # 'Hello'
print(text[7:])   # 'World!'
print(text[-1])   # '!'
print(text[::2])  # 'Hlo ol!'

4.リスト(list)

Pythonのリスト(list)は、複数の要素を順序付けて格納するデータ構造です。リストは可変(変更可能)であり、異なる型の要素を含むことができますが、通常は同じ型の要素を格納することが多いです。リストは非常に柔軟で強力なデータ型であり、Pythonプログラミングにおいて広く使用されます。

リストの作成と基本操作

リストは角括弧([])を使って作成し、コンマで区切られた要素を含みます。

my_list = [1, 2, 3, 4, 5]  # 整数のリスト
names = ['Alice', 'Bob', 'Charlie']  # 文字列のリスト
mixed = [1, 'Alice', True, 2.34]  # 異なる型の要素を含むリスト

リストは可変なので、要素の追加、削除、変更が可能です。

要素の追加: .append(value) メソッドを使用してリストの末尾に要素を追加します。
要素の挿入: .insert(index, value) メソッドを使用して特定の位置に要素を挿入します。
要素の削除: .remove(value) メソッドを使用して特定の値を持つ要素を削除します。.pop(index) メソッドを使用して特定の位置の要素を削除し、その要素を返します。

リストの操作と関数

リストに対しては様々な操作が可能です。

スライス: リストの一部を取り出します。
結合: + 演算子を使用してリスト同士を結合します。
繰り返し: * 演算子を使用してリストの要素を繰り返します。
リスト内包表記: 新しいリストを生成するために、式と制御構造を含むコンパクトな方法を提供します。

# リスト内包表記の例
squares = [x**2 for x in range(10)]

リストとイテレーション

リストはイテラブル(繰り返し可能)であり、forループを使ってリストの各要素にアクセスすることができます。

for name in names:
    print(name)

5.タプル(tuple)

Pythonのタプル(tuple)は、複数の要素を順序付けて格納するデータ構造ですが、リストとは異なりイミュータブル(変更不可能)です。タプルは異なる型の要素を含むことができ、一度作成されるとその内容を変更することはできません。この特性により、タプルはプログラム内で変更されるべきではないデータの保持に適しています。また、タプルはハッシュ可能であり、辞書のキーとして使用することができます。

タプルの作成と基本操作

タプルは丸括弧(())を使って作成しますが、括弧なしでも要素をコンマで区切ることでタプルを作成できます。ただし、単一の要素を持つタプルを作成する場合は、要素の後ろにコンマを付ける必要があります。

my_tuple = (1, 2, 3, 4, 5)
no_parentheses = 'Alice', 'Bob', 'Charlie'
single_element = (42,)

タプルのアクセスと操作

タプルの要素にアクセスするには、インデックスを使います。スライスもサポートされています。しかし、タプルはイミュータブルなので、一度作成されたタプルの要素を変更することはできません。

print(my_tuple[0])  # 最初の要素にアクセス
print(my_tuple[1:3])  # タプルの一部をスライス

プル同士は結合することができますが、これは新しいタプルを作成する操作です。

combined_tuple = my_tuple + no_parentheses

タプルの使用例

関数の引数と戻り値: タプルは関数から複数の値を返す際に便利です。
パッキングとアンパッキング: 複数の変数に一度に値を割り当てることができます。
不変なリストとして: リストの代わりにタプルを使用することで、データが意図せず変更されるのを防ぐことができます。

def min_max(items):
    return min(items), max(items)  # 複数の値をタプルで返す

# アンパッキング
min_val, max_val = min_max([1, 2, 3, 4, 5])

6.辞書(dict)

Pythonの辞書(dict)は、キーと値のペアを格納するデータ構造です。辞書は順序を保証しないコレクションであり(Python 3.7以降では挿入順序が保持されますが、これは実装の詳細であり、辞書の基本的な性質ではありません)、キーによって値にアクセスします。辞書は可変で、動的に要素を追加、削除、変更することができます。キーはイミュータブル(変更不可能)な型でなければならず、通常は文字列やタプルなどが使用されますが、値には任意のデータ型を使用できます。

辞書の作成と基本操作

辞書は波括弧({})を使って作成し、キーと値のペアはコロン(:)で区切られます。

my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}

また、dict()コンストラクタを使用して、キーワード引数やキーと値のペアのリストから辞書を作成することもできます。

my_dict = dict(name='Alice', age=30, city='New York')

辞書の要素へのアクセスと変更

辞書の要素にアクセスするには、キーを使います。要素を変更するには、キーを指定して新しい値を割り当てます。

# 要素へのアクセス
print(my_dict['name'])  # 'Alice'

# 要素の変更
my_dict['age'] = 31

存在しないキーにアクセスしようとすると、KeyErrorが発生します。これを避けるために、get()メソッドを使ってキーの値を取得することができます。get()メソッドは、キーが存在しない場合にはNoneを返すか、指定したデフォルト値を返します。

print(my_dict.get('job', 'Not specified'))  # 'Not specified'

辞書への要素の追加と削除
辞書に新しい要素を追加するには、新しいキーに値を割り当てます。要素を削除するには、delステートメントを使用するか、pop()メソッドを使用します。

# 要素の追加
my_dict['job'] = 'Engineer'

# 要素の削除
del my_dict['city']  # 'city'キーとその値を削除
job = my_dict.pop('job')  # 'job'キーを削除し、その値を返す

辞書のイテレーション

辞書をループで処理するには、items()メソッドを使用してキーと値のペアにアクセスするか、keys()メソッドやvalues()メソッドを使用してそれぞれキーや値にアクセスします。

for key, value in my_dict.items():
    print(f'{key}: {value}')

7.ブール(bool)

Pythonのブール型(bool)は、真(True)または偽(False)のいずれかの値を持つデータ型です。ブール型はプログラミングにおいて非常に重要で、条件文や制御フローの決定、論理演算の結果を表すのに使われます。

ブール値の生成

ブール値は、直接TrueやFalseを指定することによって、または比較演算子や論理演算子の結果として生成されます。

a = True
b = False

# 比較演算子の結果としてブール値を生成
result = (10 > 5)  # True

論理演算子

ブール型には、and、or、notの3つの論理演算子が使用できます。

and: 両方のオペランドがTrueの場合にTrueを返します。
or: 少なくとも一方のオペランドがTrueの場合にTrueを返します。
not: オペランドがFalseの場合にTrueを返し、Trueの場合にFalseを返します。

result_and = True and False  # False
result_or = True or False  # True
result_not = not True  # False

真偽値の評価

Pythonでは、TrueやFalse以外の値も条件文の中で真偽値として評価されます。一般に、以下のような値はFalseと評価されます。

None
0(ゼロ)や0.0などの数値ゼロ
空の文字列(”)、リスト([])、タプル(())、辞書({})などの空のコレクション
その他、bool() メソッドまたはlen() メソッドがFalseまたはゼロを返すオブジェクト
これ以外の値は基本的にTrueとして評価されます。

if []:  # Falseと評価される
    print("このブロックは実行されません。")

if [1, 2, 3]:  # Trueと評価される
    print("このブロックは実行されます。")

ブール型の使用例

ブール型は、プログラムの決定を行う際に広く使用されます。例えば、特定の条件が満たされているかどうかをチェックする場合や、ループを継続するかどうかを判断する場合などです。

flag = True
if flag:
    print("フラグは真です。")
else:
    print("フラグは偽です。")

■まとめ

Pythonではタプルやdictを使う場面が多々あります。

常に使えるように覚えておくのが良いでしょう。

記事