Python 入門

Python 常用組み込み関数

組み込み関数(Built-in functions)は、Python にあらかじめ定義されている関数であり、追加の import ステートメントを記述することなく直接使用できます。
これらは共通のタスクを実行するための便利な手段を提供し、コードの可読性を大幅に高め、開発時間を短縮します。
本章では、最も頻繁に使用される組み込み関数、その機能、および実務での応用方法について解説します。

1. 基本的な関数

これらの関数は最も基礎的なものであり、ほぼすべての Python プログラムで使用されます。

1.1 print():コンソール出力

print() 関数は、出力内容をコンソールに表示するために使用されます。

# print() 関数の例
name = "Alice"
print("Hello,", name + "!") # 文字列を結合して挨拶を表示

age = 30
print("あなたは今年", age, "歳です。") # 文字列と整数を混合して出力

print(f"来年、あなたは {age + 1} 歳になります。") # f-strings を使用したフォーマット済み出力

print() 関数は複数の引数を受け取ることができ、デフォルトではそれらの間がスペースで区切られます。f-strings(プレフィックス f を持つフォーマット済み文字列リテラル)は、式を文字列内に直接埋め込むための非常に簡潔な手法を提供します。

1.2 len():長さの取得

len() 関数は、シーケンス(文字列、リスト、タプルなど)の長さ(要素数)を返します。

# len() 関数の例
my_string = "Python"
print(len(my_string))  # 出力: 6

my_list = [1, 2, 3, 4, 5]
print(len(my_list))    # 出力: 5

my_tuple = (10, 20, 30)
print(len(my_tuple))   # 出力: 3

len() 関数は非常に汎用的で、さまざまなデータ構造に適用できるため、データのサイズを特定する際の最短ルートとなります。

1.3 type():型の確認

type() 関数は、オブジェクトのデータ型を返します。

# type() 関数の例
x = 10
print(type(x))  # 出力: <class 'int'>

y = 3.14
print(type(y))  # 出力: <class 'float'>

z = "Hello"
print(type(z))  # 出力: <class 'str'>

a = [1, 2, 3]
print(type(a))  # 出力: <class 'list'>

type() 関数は、デバッグ時や現在処理しているデータの型を理解する必要がある場合に非常に役立ちます。

1.4 input():ユーザー入力の取得

input() 関数は、ユーザーから一行の入力を読み取る(標準入力)ために使用されます。

# input() 関数の例
name = input("名前を入力してください: ")
print("こんにちは、", name + "さん!")

age = input("年齢を入力してください: ")
age = int(age)  # 入力された文字列を整数に変換
print("あなたは今年", age, "歳です。")

ヒント: input() 関数は常に文字列 (string) を返します。ユーザーが数値を入力した場合でも、計算を行うには int()float() などの関数を使用して適切な数値型に変換する必要があります。

2. 型変換関数

これらの関数は、値をあるデータ型から別のデータ型へ変換するために使用されます。

2.1 int():整数への変換

# int() 関数の例
x = "10"
print(type(x)) # 出力: <class 'str'>

y = int(x)
print(type(y)) # 出力: <class 'int'>

print(int(3.14))  # 出力: 3 (小数点以下を切り捨て)
print(int("1010", 2)) # 出力: 10 (バイナリ文字列を10進数の整数に変換)

int() は浮動小数点数の小数点以下を直接切り捨てます(四捨五入は行いません)。また、異なる進数(バイナリやヘキサデシマルなど)を表す文字列を10進数の整数に変換することも可能です。

2.2 float():浮動小数点数への変換

# float() 関数の例
x = "3.14"
print(type(x)) # 出力: <class 'str'>

y = float(x)
print(type(y)) # 出力: <class 'float'>

print(float(10))   # 出力: 10.0

小数を含む精密な数学計算が必要な場合、float() 関数は欠かせません。

2.3 str():文字列への変換

# str() 関数の例
x = 10
print(type(x)) # 出力: <class 'int'>

y = str(x)
print(type(y)) # 出ly: <class 'str'>

print(str(3.14))  # 出力: "3.14"
print(str(True))  # 出力: "True"

数値や他のデータ型をテキストと結合する場合、あるいは非テキストデータをテキストとして表現したい場合に、str() が重要になります。

2.4 bool():真偽値への変換

# bool() 関数の例
print(bool(0))      # 出力: False
print(bool(1))      # 出力: True
print(bool(""))     # 出力: False (空の文字列)
print(bool("Hello"))  # 出力: True
print(bool([]))     # 出力: False (空のリスト)
print(bool([1, 2]))  # 出力: True

bool() 関数は、条件分岐や論理操作で頻繁に使用されます。変換ルールとして、数値の 0、空の文字列 ""、および空のコレクション([], {} など)は False と判定され、それ以外の内容がある値はすべて True と判定されます。

3. 数学演算関数

これらの関数は、共通の数学的演算を実行するために使用されます。

3.1 abs():絶対値

print(abs(-10))   # 出力: 10
print(abs(5))     # 出力: 5
print(abs(-3.14)) # 出力: 3.14

ある値が正であることを保証し、元の符号を無視したい場合に abs() は非常に有用です。

3.2 pow():冪乗(べきじょう)

print(pow(2, 3))   # 出力: 8 (2 の 3 乗)
print(pow(5, 2))   # 出力: 25 (5 の 2 乗)
print(pow(10, -1)) # 出力: 0.1 (10 の -1 乗)

pow(x, y)x y と同等です。さらに、第3引数を受け取って冪剰余演算(モジュロ冪数)を実行することもでき、これは暗号学において非常に重要です。

3.3 round():四捨五入

print(round(3.14159, 2))  # 出力: 3.14 (小数点第2位まで保持)
print(round(3.14159))     # 出力: 3 (最も近い整数に丸める)
print(round(3.5))         # 出力: 4 (端数が .5 の場合、最も近い偶数へ丸める「銀行家の丸め」)

round() を使用すると、数値を指定した小数点桁数に丸めることができます。

3.4 max() と min():最大値と最小値

# max() 最大値を探す
print(max(1, 2, 3, 4, 5))  # 出力: 5
print(max([1, 2, 3, 4, 5])) # 出力: 5
print(max("a", "b", "c"))    # 出力: c (アルファベット順で比較)

# min() 最小値を探す
print(min(1, 2, 3, 4, 5))  # 出力: 1
print(min([1, 2, 3, 4, 5])) # 出力: 1
print(min("a", "b", "c"))    # 出力: a

これら 2 つの関数は、コレクション内または一連の値の中から極値(最大・最小)を見つけ出すための強力なツールです。

4. シーケンス操作関数

これらの関数は、主にリスト、タプル、文字列などのシーケンスを対象に操作を行います。

4.1 sum():総和の計算

print(sum([1, 2, 3, 4, 5]))  # 出力: 15
print(sum((10, 20, 30)))    # 出力: 60
print(sum([1, 2, 3], 10))    # 出力: 16 (リストの合計に初期値 10 を加算)

sum() は、イテラブルオブジェクト内のすべての要素の合計を返します。第 2 引数にオプションの値を渡すと、それを初期累計値として使用します。

4.2 sorted():ソートされた新しいリストの返却

numbers = [5, 2, 8, 1, 9]
print(sorted(numbers))               # 出力: [1, 2, 5, 8, 9]
print(numbers)                       # 出力: [5, 2, 8, 1, 9] (元のリストは変更されない)

letters = "Python"
print(sorted(letters))               # 出力: ['P', 'h', 'n', 'o', 't', 'y']
print(sorted(numbers, reverse=True)) # 出力: [9, 8, 5, 2, 1] (降順ソート)

リスト固有の .sort() メソッドとは異なり、sorted() はソート済みの新しいリストを返し、元のシーケンスを変更しません。また、reverse=True を指定することで降順ソートが可能です。

4.3 reversed():シーケンスの反転

numbers = [1, 2, 3, 4, 5]
reversed_numbers = reversed(numbers)
print(list(reversed_numbers))  # 出力: [5, 4, 3, 2, 1]

letters = "Python"
reversed_letters = reversed(letters)
print("".join(reversed_letters)) # 出力: nohtyP

reversed() は逆順のイテレータ(iterator)を返します。結果を確認するには、通常 list() でリストに変換するか、join() で文字列に結合し直す必要があります。

4.4 enumerate():シーケンスの列挙

fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(index, fruit)
    # 出力:
    # 0 apple
    # 1 banana
    # 2 cherry

enumerate() はシーケンスをループで回す際に非常に便利です。要素のインデックス(index)と値(value)を同時に返すため、手動でカウンターを管理する手間が省けます。

5. ユーティリティ関数

これらの関数は、さまざまな雑多なタスクに対して有用なサポートを提供します。

5.1 help():ヘルプドキュメントの取得

# help(print)  # print() 関数に関する公式ヘルプをコンソールに表示
# help(len)    # len() 関数に関するドキュメントを表示

特定の関数やモジュールの使い方が分からなくなったとき、help() は計り知れない価値を発揮します。

5.2 isinstance():型のチェック

x = 10
print(isinstance(x, int))    # 出力: True
print(isinstance(x, float))  # 出力: False

y = [1, 2, 3]
print(isinstance(y, list))   # 出力: True
print(isinstance(y, tuple))  # 出力: False

isinstance() は、あるオブジェクトが特定のクラスや型に属しているかをチェックします。動的型付けの Python において、データバリデーション(検証)を行う際に非常に適しています。

6. 実践ケースとデモンストレーション

実際のアプリケーションシーンを想定し、これらの組み込み関数を組み合わせて使用する方法を紹介します。

6.1 ケース 1:平均値の計算

sum()len() を組み合わせて使用します。

numbers = [10, 20, 30, 40, 50]
total = sum(numbers)
count = len(numbers)
average = total / count
print("平均値は:", average) # 出力: 平均値は: 30.0

6.2 ケース 2:ユーザー入力と数学計算

input()float()、および pow() を組み合わせて使用します。

radius_str = input("円の半径を入力してください: ")
radius = float(radius_str) # 文字列を浮動小数点数に変換
area = 3.14159 * pow(radius, 2) # 円の面積を計算
print("円の面積は:", area)

6.3 ケース 3:データセットの極値の探索

max()min() を組み合わせて使用します。

numbers = [45, 12, 78, 3, 56]
largest = max(numbers)
smallest = min(numbers)
print("最大値は:", largest)   # 出力: 最大値は: 78
print("最小値は:", smallest)  # 出力: 最小値は: 3