こんにちは!Python入門シリーズをお読みいただき、ありがとうございます。今回は特別編として、Pythonのビルトイン関数について詳しく解説していきます。ビルトイン関数とは、Pythonに最初から組み込まれている便利な関数のことで、これらを使いこなすことでプログラミングの効率が劇的に向上します!
ビルトイン関数とは何か?
ビルトイン関数(Built-in Functions)とは、Pythonインストール時から利用できる組み込み関数のことです。import文を書かずに、すぐに使える便利な機能が70個以上用意されています。
例えば、リストの長さを調べたり、数値の合計を計算したりする処理は、自分でコードを書かなくても、最初から用意されている関数を呼び出すだけで実現できます。これがビルトイン関数の便利さです。
なぜビルトイン関数が重要なのか?
プログラミング初心者がビルトイン関数を学ぶべき理由は4つあります:
- 効率性: 複雑な処理を1行で実現できる
- 可読性: コードが短く、他の人にも理解しやすくなる
- 保守性: 標準機能なので、どの環境でも安定して動作する
- 学習効果: Pythonらしい書き方を自然に身につけられる
実際のプログラミングでは、これらの関数を組み合わせることで、驚くほどシンプルに複雑な処理を書けるようになります。
基本的な入出力関数
プログラムとユーザーのやり取りに欠かせない、最も基本的な関数から見ていきましょう。
print()関数 – 画面への出力
print()は、画面に文字や数値を表示するための関数です。Pythonを学習する上で最初に使う関数であり、デバッグ(プログラムの動作確認)でも頻繁に使用します。
# 基本的な使い方
print("こんにちは")
# 複数の値を同時に出力
name = "田中"
age = 25
print("名前:", name, "年齢:", age)
# 出力: 名前: 田中 年齢: 25
Pythonこのように、print()に複数の値を渡すと、それらをスペースで区切って表示してくれます。変数の内容を確認したい時に便利です。
セパレータと改行の制御:
# 区切り文字を変更
print("りんご", "バナナ", "オレンジ", sep=", ")
# 出力: りんご, バナナ, オレンジ
# 改行を制御
print("処理中", end="...")
print("完了")
# 出力: 処理中...完了
Pythonsepパラメータで区切り文字を、endパラメータで末尾の文字を変更できます。デフォルトはスペースと改行ですが、必要に応じてカスタマイズ可能です。
input()関数 – ユーザーからの入力
input()は、プログラム実行中にユーザーから文字列を受け取るための関数です。インタラクティブなプログラム(ユーザーとの対話型プログラム)を作る際に必須です。
# 基本的な入力
name = input("お名前を入力してください: ")
print(f"こんにちは、{name}さん!")
Pythoninput()は、括弧内の文字列をプロンプト(入力を促すメッセージ)として表示し、ユーザーがEnterキーを押すまで待機します。
重要な注意点: input()関数は常に文字列を返すことを覚えておいてください。数値として使いたい場合は、型変換が必要です。
# 数値として扱う場合
age = int(input("年齢を入力してください: "))
print(f"10年後は{age + 10}歳ですね")
Pythonユーザーが「25」と入力した場合、input()は文字列の"25"を返します。これをint()で整数の25に変換することで、数値計算ができるようになります。
型変換関数
Pythonでは、データの「型」を適切に変換することが重要です。型とは、データの種類のことで、整数、小数、文字列などがあります。
int() – 整数への変換
int()は、文字列や小数を整数に変換する関数です。
# 文字列を整数に変換
text_number = "123"
number = int(text_number)
print(number + 10) # 133
# 小数を整数に変換(小数点以下切り捨て)
print(int(3.9)) # 3
print(int(-2.5)) # -2
Python文字列の"123"を整数の123に変換しています。変換後は通常の数値として計算できます。小数を整数に変換する場合、小数点以下は切り捨てられます(四捨五入ではありません)。
float() – 小数への変換
float()は、文字列や整数を小数(浮動小数点数)に変換する関数です。
# 文字列を小数に変換
price_text = "99.99"
price = float(price_text)
print(price * 1.08) # 107.9892(税込み計算)
Python金額計算など、小数点以下の値を扱う場合に使用します。
str() – 文字列への変換
str()は、数値やその他のデータを文字列に変換する関数です。
# 数値を文字列に変換
count = 42
message = f"現在の数は{count}です"
print(message) # 現在の数は42です
Python現在ではf-string記法を使う方が一般的です。f-string記法では、自動的に型変換が行われるため、str()を明示的に書く必要がありません。
bool() – 真偽値への変換
bool()は、値を真(True)か偽(False)に変換する関数です。条件分岐で使用される重要な概念です。
# 数値の真偽値判定
print(bool(0)) # False
print(bool(1)) # True
print(bool(-5)) # True
# 文字列の真偽値判定
print(bool("")) # False(空文字列)
print(bool("hello")) # True
# リストの真偽値判定
print(bool([])) # False(空リスト)
print(bool([1, 2])) # True
PythonPythonでは、0だけが偽(False)として扱われ、それ以外のすべての数値は真(True)です。空文字列、空リスト、空辞書なども偽として扱われます。
Pythonで偽(False)として扱われる値(Falsy値):
0,0.0(数値のゼロ)""(空文字列)[](空リスト){}(空辞書)None(何もないことを表す特別な値)
数学計算関数
数値を扱う際に頻繁に使用する、計算に関連した便利な関数を見ていきましょう。
abs() – 絶対値の計算
abs()は、数値の絶対値(符号を取り除いた値)を返す関数です。
# 基本的な絶対値計算
print(abs(-10)) # 10
print(abs(3.14)) # 3.14
# 実践例:温度差の計算
current_temp = 18
target_temp = 22
temp_difference = abs(current_temp - target_temp)
print(f"設定温度との差: {temp_difference}度")
# 出力: 設定温度との差: 4度
Python現在の温度と目標温度の差を計算する例です。引き算の結果が負の数になる可能性がありますが、abs()を使うことで常に正の数(差の大きさ)を得られます。「どちらが大きいか分からないけど、その差が知りたい」という場合に便利です。
min(), max() – 最小値と最大値
min()は最小値を、max()は最大値を見つける関数です。
# 複数の引数から最小値・最大値を求める
print(min(5, 2, 8, 1, 9)) # 1
print(max(5, 2, 8, 1, 9)) # 9
# リストから最小値・最大値を求める
scores = [85, 92, 78, 96, 88]
print(f"最高点: {max(scores)}") # 96
print(f"最低点: {min(scores)}") # 78
Python5つの数値を自分で比較するコードを書くのは大変ですが、関数を使えば1行で済みます。リストの要素が何個あっても、同じように使えます。
sum() – 合計値の計算
sum()は、リストや範囲内の数値の合計を計算する関数です。
# 基本的な合計計算
numbers = [10, 20, 30, 40, 50]
total = sum(numbers)
print(f"合計: {total}") # 150
# 実践例:平均点の計算
test_scores = [85, 90, 78, 92, 88]
average = sum(test_scores) / len(test_scores)
print(f"平均点: {average:.1f}点") # 86.6点
Python合計を求めた後、要素数(len()で取得)で割ることで平均値を計算しています。このように、複数のビルトイン関数を組み合わせることで、より複雑な計算も簡潔に書けます。
round() – 四捨五入
round()は、小数を指定した桁数で四捨五入する関数です。
# 基本的な四捨五入
print(round(3.7)) # 4
print(round(3.2)) # 3
# 小数点以下の桁数を指定
print(round(3.14159, 2)) # 3.14
print(round(3.14159, 4)) # 3.1416
Python第2引数で小数点以下何桁まで残すかを指定できます。円周率πを小数点以下2桁にするならround(3.14159, 2)で3.14になります。
文字列・リスト操作関数
データの長さを調べたり、並び替えたりする、データ構造を扱う際に必須の関数を学びましょう。
len() – 長さの取得
len()は、文字列の文字数やリストの要素数など、「データの長さ」を取得する関数です。最も使用頻度の高い関数の一つです。
# 文字列の長さ
message = "こんにちは"
print(f"文字数: {len(message)}") # 5
# リストの要素数
fruits = ["りんご", "バナナ", "オレンジ"]
print(f"果物の種類数: {len(fruits)}") # 3
# 実践例:パスワード強度チェック
password = input("パスワードを入力してください: ")
if len(password) < 8:
print("パスワードは8文字以上で設定してください")
else:
print("パスワードが設定されました")
Pythonパスワードの文字数をチェックする例です。セキュリティ上、パスワードは一定の長さ以上にする必要があるため、len()で文字数を確認しています。
sorted() – ソート(並び替え)
sorted()は、リストの要素を小さい順(または辞書順)に並び替える関数です。重要なのは、元のリストは変更せず、新しいリストを返すことです。
# 数値のリストをソート
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers)
print(f"昇順: {sorted_numbers}")
# 出力: 昇順: [1, 1, 2, 3, 4, 5, 6, 9]
# 降順でソート
desc_numbers = sorted(numbers, reverse=True)
print(f"降順: {desc_numbers}")
# 出力: 降順: [9, 6, 5, 4, 3, 2, 1, 1]
Python元のnumbersリストはそのままで、並び替えられた新しいリストが返されます。reverse=Trueを指定すると、降順(大きい順)にソートされます。
reversed() – 逆順
reversed()は、リストや文字列を逆順にする関数です。
# リストの逆順
numbers = [1, 2, 3, 4, 5]
reversed_numbers = list(reversed(numbers))
print(f"逆順: {reversed_numbers}")
# 出力: 逆順: [5, 4, 3, 2, 1]
# 実践例:カウントダウン
for i in reversed(range(1, 6)):
print(f"カウントダウン: {i}")
# 出力: 5, 4, 3, 2, 1の順に表示
Pythonreversed()はイテレータを返すため、list()で通常のリストに変換しています。カウントダウンタイマーなどを作る際に使えるテクニックです。
反復処理関数
繰り返し処理(ループ)をより便利にする関数を学びましょう。
range() – 数値の範囲生成
range()は、指定した範囲の整数を生成する関数です。for文での繰り返し回数を指定する際に最もよく使われます。
# 基本的な範囲生成
print(list(range(5))) # [0, 1, 2, 3, 4]
print(list(range(1, 6))) # [1, 2, 3, 4, 5]
print(list(range(1, 10, 2))) # [1, 3, 5, 7, 9]
Pythonrange(5): 0から4まで(5個の数値)range(1, 6): 1から5まで(終わりの数値は含まない)range(1, 10, 2): 1から9まで、2ずつ増加
重要: 終わりの数値は含まれません。range(1, 6)は6を含まず、5で終わります。
enumerate() – インデックスと値を同時取得
enumerate()は、リストの要素とそのインデックス(位置番号)を同時に取得できる関数です。
# 基本的な使用法
fruits = ["りんご", "バナナ", "オレンジ"]
for index, fruit in enumerate(fruits, start=1):
print(f"{index}. {fruit}")
# 出力: 1. りんご, 2. バナナ, 3. オレンジ
Pythonstart=1を指定すると、0番目ではなく1番目から数え始めます。ランキングやメニュー表示など、人間が読む番号を表示したい場合に便利です。
zip() – 複数のリストを同時処理
zip()は、複数のリストを「並行して」処理する関数です。
# 基本的な使用法
names = ["田中", "佐藤", "鈴木"]
ages = [25, 30, 28]
for name, age in zip(names, ages):
print(f"{name}さんは{age}歳です")
# 出力: 田中さんは25歳です
# 佐藤さんは30歳です
# 鈴木さんは28歳です
Pythonnamesの最初の要素とagesの最初の要素をペアにして取り出します。2つ以上のリストを関連付けて処理したい場合に非常に便利です。
高度な機能関数
データ処理を効率化する高度な関数を見ていきましょう。
any(), all() – 論理判定
any()とall()は、リストの要素に対して「一つでも条件を満たすか」「すべて条件を満たすか」を判定する関数です。
# any(): 一つでもTrueがあればTrue
numbers = [0, 0, 1, 0]
print(any(numbers)) # True
# all(): すべてTrueであればTrue
all_true = [1, 2, 3, 4]
print(all(all_true)) # True
has_zero = [1, 2, 0, 4]
print(all(has_zero)) # False(0がFalsy)
Python実践例:パスワード要件チェック
password = "MyPass123"
# 各条件をチェック
has_upper = any(c.isupper() for c in password) # 大文字を含むか
has_lower = any(c.islower() for c in password) # 小文字を含むか
has_digit = any(c.isdigit() for c in password) # 数字を含むか
has_length = len(password) >= 8
# すべての条件を満たすかチェック
if all([has_upper, has_lower, has_digit, has_length]):
print("パスワードは要件を満たしています")
else:
print("パスワードが要件を満たしていません")
Pythonこの例では、any()とジェネレータ式を組み合わせて、パスワードの各文字をチェックしています。
filter() – 条件に合う要素の抽出
filter()は、リストから条件を満たす要素だけを抽出する関数です。
# 基本的な使い方:偶数だけを抽出
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(f"偶数: {even_numbers}")
# 出力: 偶数: [2, 4, 6, 8, 10]
# 基本的な使い方:偶数だけを抽出
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(f"偶数: {even_numbers}")
# 出力: 偶数: [2, 4, 6, 8, 10]
Python構文の説明:
lambda x: x % 2 == 0: 「xが偶数ならTrue」という条件を表す無名関数filter()は条件がTrueの要素だけを残しますlist()で結果をリストに変換しています
map() – 全要素に関数を適用
map()は、リストのすべての要素に同じ処理を適用する関数です。
# 基本的な使い方:すべての数を2乗
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(f"2乗: {squared}")
# 出力: 2乗: [1, 4, 9, 16, 25]
# 文字列を大文字に変換
words = ["hello", "world", "python"]
uppercase = list(map(str.upper, words))
print(f"大文字: {uppercase}")
# 出力: 大文字: ['HELLO', 'WORLD', 'PYTHON']
Python各要素に対して「2乗する」という同じ処理を適用しています。forループを書かずに一括変換できるのが便利です。
実践的な組み合わせ例
ここまで学んだビルトイン関数を組み合わせて、実用的なプログラムを作ってみましょう。
テストの成績分析プログラム
# 5人の学生の3科目の点数
students = ["田中", "佐藤", "鈴木", "高橋", "山田"]
math_scores = [85, 92, 78, 96, 88]
english_scores = [90, 85, 82, 89, 91]
print("=== テスト結果分析 ===\n")
# 各学生の分析
for i, name in enumerate(students):
math = math_scores[i]
english = english_scores[i]
total = math + english
average = round(total / 2, 1)
print(f"{name}さん:")
print(f" 数学: {math}点, 英語: {english}点")
print(f" 合計: {total}点, 平均: {average}点\n")
# クラス全体の統計
print("【クラス全体】")
math_avg = round(sum(math_scores) / len(math_scores), 1)
english_avg = round(sum(english_scores) / len(english_scores), 1)
print(f"数学 - 平均: {math_avg}点, 最高: {max(math_scores)}点")
print(f"英語 - 平均: {english_avg}点, 最高: {max(english_scores)}点")
Pythonこのプログラムの解説:
- enumerate()の活用:
for i, name in enumerate(students)で、インデックスiと学生名nameを同時に取得 - 複数関数の組み合わせ:
sum()で合計、len()で要素数、round()で四捨五入、max()で最高点を求めています - データの対応: インデックス
iを使って、同じ学生の各科目の点数を取り出しています
このように、ビルトイン関数を組み合わせることで、複雑な処理を簡潔に実現できます。
よくあるエラーとその対策
ビルトイン関数を使う際によく遭遇するエラーと、その対処法を見ていきましょう。
1. TypeError: ‘int’ object is not iterable
# ❌ このコードはエラーになります
numbers = 12345
result = sum(numbers)
Pythonエラーメッセージ:
TypeError: 'int' object is not iterable
原因: sum()、max()、min()などの関数は、「反復可能なオブジェクト」(リストなど)を期待しています。単一の整数12345はリストではないため、エラーが発生します。
解決方法:
# ✅ 正しい書き方
numbers = [1, 2, 3, 4, 5] # リストにする
result = sum(numbers)
print(result) # 15
Python2. ValueError: invalid literal for int() with base 10
# ❌ このコードはエラーになります
user_input = "abc"
number = int(user_input)
Pythonエラーメッセージ:
ValueError: invalid literal for int() with base 10: 'abc'
原因: int()は数値に変換できる文字列(”123″など)しか受け付けません。”abc”のような文字列は数値に変換できないためエラーになります。
解決方法:
# ✅ エラーハンドリングを含む正しい書き方
user_input = input("数値を入力してください: ")
try:
number = int(user_input)
print(f"入力された数値: {number}")
except ValueError:
print("数値を入力してください。")
Pythontry-except文を使ってエラーをキャッチし、ユーザーに適切なメッセージを表示します。
3. IndexError: list index out of range
# ❌ このコードはエラーになります
numbers = [1, 2, 3]
print(numbers[5])
Pythonエラーメッセージ:
IndexError: list index out of range
原因: リストには3つの要素(インデックス0, 1, 2)しかないのに、インデックス5にアクセスしようとしています。Pythonのインデックスは0から始まるため、3要素のリストの最後は2番目です。
解決方法:
# ✅ 安全なアクセス方法
numbers = [1, 2, 3]
index = 5
if index < len(numbers):
print(numbers[index])
else:
print(f"インデックス{index}は範囲外です(リストの長さ: {len(numbers)})")
Pythonlen()でリストの長さを確認してからアクセスすることで、エラーを防げます。
まとめと次のステップ
ビルトイン関数をマスターすることで、Pythonプログラミングの効率が大幅に向上します。重要なポイントをおさらいしましょう:
🔑 重要なポイント
- 型変換関数:
int(),float(),str(),bool()– データの型を適切に変換 - 計算関数:
abs(),min(),max(),sum(),round()– 数学的な処理を簡潔に - 反復処理関数:
range(),enumerate(),zip()– ループ処理を効率化 - データ処理関数:
len(),sorted(),reversed()– データ構造の操作 - 高度な関数:
filter(),map(),any(),all()– 関数型プログラミングの要素
🚀 実践のコツ
- 組み合わせて使う: 複数の関数を連携させることで複雑な処理も簡潔に記述
- エラーハンドリング:
try-except文と組み合わせて堅牢なプログラムを作成 - 可読性を重視: 複雑すぎる処理は分割して理解しやすくする
- 段階的学習: まず基本関数を使いこなし、徐々に応用へ
これらのビルトイン関数は、Pythonプログラミングの基礎中の基礎です。日々のプログラミングで積極的に使って、自然に使いこなせるようになりましょう!
関連記事:

コメント