Pythonのlen関数の使い方を徹底解説!初心者向け基本から応用まで

この記事のポイント

この記事では、Pythonのlen関数について分かりやすく解説します。主に以下の内容を理解できるようになります。

  • len関数の基本的な構文と、文字列やリストでの使用方法を知り、エラーが発生する場面と対処法がわかる
  • len関数で発生するTypeErrorの原因と事前にデータ型をチェックする方法を知り、None型やint型を使う時に注意できる
  • len関数のパフォーマンス特性(O(1)という計算量)を理解し、具体的な活用方法を身につける

目次

len関数の基本的な使い方

len関数は、Pythonでデータの「大きさ」を調べるためによく使われる関数です。文字列の長さやリストの要素数を調べる際に活用できます。ここでは、len関数の基本的な構文から具体的な使用例まで順番に見ていきましょう。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

len関数の構文と役割

len関数の使い方は、「len(オブジェクト)」と記述するだけの非常にシンプルな形です。この関数は、与えられたデータの長さや個数を整数として返します。例えば、文字列なら文字数、リストなら要素数、辞書ならキーの数を取得できます。len関数は多くのデータ型に対応していますが、数値型など一部のデータ型には使えないため注意しましょう。

text = "ネコ" print(len(text)) numbers = [1, 2, 3] print(len(numbers))

出力結果

2
3

lenで配列(リスト)の要素数を取得する

リストに対してlen関数を使用すると、リストに含まれる要素の個数を調べることができます。リストが空の場合は0が返されます。たとえリストの中に別のリストが入っていても、その内側のリストは全体で1つの要素として数えられます。この特性を理解することで、データの処理や繰り返し(ループ)処理を行う際に、len関数を上手く活用できます。

animals = ["イヌ", "ネコ", "ウサギ"] print(len(animals)) empty_list = [] print(len(empty_list)) nested_list = [["イヌ", "ネコ"], ["ウサギ"]] print(len(nested_list))

出力結果

3
0
2

lenで文字列の長さを数える方法

文字列に対してlen関数を使用すると、その文字列に何文字含まれているかを取得できます。日本語の文字も1文字として正確にカウントされますし、空の文字列の場合は0が返されます。ただし、改行やスペースも1文字として数えられることに注意しましょう。len関数は文字列が正しいかを確認したり、データの処理を行ったりする際に非常に役立つ機能です。

animal_name = "ライオン" print(len(animal_name)) empty_string = "" print(len(empty_string)) string_with_space = "トラ ゾウ" print(len(string_with_space))

出力結果

4
0
5

len関数でよくあるエラーとその対処法まとめ

len関数を使う際に発生しやすいエラーを知り、適切な対処法を身につけることで、より安定したコードが書けるようになります。ここでは代表的なエラーパターンと、それを防ぐ方法について詳しく解説します。

lenで発生する代表的なエラー

len関数で最もよく出るエラーはTypeErrorです。このエラーは、len関数が対応していないデータ型(int型、float型、None型など)に対して、関数を呼び出したときに発生します。エラーメッセージは「object of type 'int' has no len()」のように表示され、どのデータ型が原因でエラーになったのかがはっきりと書かれます。このエラーを理解しておくことで、デバッグ(プログラムの問題を取り除く)時に素早く原因を特定できるようになります。

try: result = len(42) # int型でエラー except TypeError as e: print(f"エラー: {e}") try: result = len(None) # None型でエラー except TypeError as e: print(f"エラー: {e}")

出力結果

エラー: object of type 'int' has no len()
エラー: object of type 'NoneType' has no len()

lenとint型

整数であるint型にlen関数を使おうとするとTypeErrorが発生します。これは、数値には長さという概念がないためです。このエラーは、初心者が変数のデータ型を間違えて理解している場合によく起こります。解決策としては、事前にisinstance関数でデータ型をチェックするか、数値を文字列に変換してからlen関数を使う方法があります。

number = 123 # len(number) # これはエラーになる # 文字列に変換してから長さを取得 str_number = str(number) print(len(str_number)) # 型チェックしてから実行 if isinstance(number, (str, list, tuple)): print(len(number)) else: print("長さを取得できない型です")

出力結果

3
長さを取得できない型です

lenとNone型

何もないことを示すNone型のオブジェクトにlen関数を使うと、TypeErrorが発生します。これは、Noneには長さという概念がないためです。このエラーを防ぐには、事前に対象のオブジェクトがNoneでないか確認する必要があります。if文を使ってNoneの場合は別の処理を行ったり、デフォルト値を設定したりすることで、安全にlen関数を使用できます。Noneかどうかを判断するには「is None」または「is not None」を使うのがおすすめです。

animal = None if animal is not None: print(len(animal)) else: print("動物データがありません") # 安全な書き方 animal_list = None length = len(animal_list) if animal_list is not None else 0 print(f"要素数: {length}")

出力結果

動物データがありません
要素数: 0

len関数を使う前に型をチェックする方法

len関数を安全に使うためには、事前にデータの型をチェックする方法があります。isinstance関数を使うと、データが指定した型かどうかを確認できます。また、hasattr関数を使えば、そのデータにlenが使えるかチェックできます。これらの方法を組み合わせることで、エラーを事前に防ぎ、堅牢なコードが書けます。データの型を確認するやり方は、プログラムの処理を分岐させるときに特に重要になります。

def safe_len(obj): if isinstance(obj, (str, list, tuple, dict)): return len(obj) else: return None # 使用例 animals = ["イヌ", "ネコ"] number = 123 print(safe_len(animals)) # 正常に長さを取得 print(safe_len(number)) # Noneを返す

出力結果

2
None

len関数の処理速度とパフォーマンスの考え方

len関数のパフォーマンス(性能)を理解することで、効率的なプログラムを書くことができます。特にサイズの大きいデータを扱う場合、len関数がどのように計算されているかを知っておくことは重要です。ここではlen関数が内部でどう動作しているかを詳しく説明します。

lenの計算量はO(1)!その意味とは?

len関数の計算量はO(1)、つまり定数時間で実行されます。これは、データの中に入っている要素の数がどれだけ多くても、常に同じ時間で処理が完了するという意味です。Pythonのリストや文字列といったデータは、内部的に要素の数を記録しているので、len関数は単純にその値を読み取るだけで済みます。一つひとつの要素を数える必要がないため、非常に高速に動作します。この特性により、頻繁にlen関数を呼び出してもパフォーマンスが落ちることはありません。

import time # 小さなリスト small_list = ["イヌ"] * 100 start_time = time.time() length = len(small_list) small_time = time.time() - start_time print(f"小さなリスト(100要素): {length}, 時間: {small_time}")

出力結果(例)

小さなリスト(100要素): 100, 時間: 9.5367431640625e-07

※出力結果は実行ごとに変わります

巨大なリストに対するlenの影響は?

巨大なリストであっても、len関数のパフォーマンスは変わりません。100万個の要素を持つリストでも、10個の要素を持つリストでも、処理時間はほぼ同じになります。これは、Pythonがデータの長さをあらかじめ計算して保存しているためです。要素を追加したり、削除したりした時には自動で更新されるので、len関数が呼ばれた時にはすぐにその値を返すことができます。この仕組みにより、大規模なデータ処理でも安心してlen関数を使えます。

import time # 巨大なリスト large_list = ["ネコ"] * 1000000 start_time = time.time() length = len(large_list) large_time = time.time() - start_time print(f"大きなリスト(100万要素): {length}, 時間: {large_time}") # 処理時間の差はほとんどない print("len関数は要素数に関係なく高速に動作します")

出力結果(例)

大きなリスト(100万要素): 1000000, 時間: 1.1920928955078125e-06
len関数は要素数に関係なく高速に動作します

※出力結果は実行ごとに変わります

lenの実用例

ここでは、実際の開発現場でよく使われるlen関数の活用例を紹介します。基本的な使い方から応用的なテクニックまで、具体的なコード例を見て学習できます。ここで紹介するサンプルコードは、データ処理や条件分岐、ループ処理などさまざまな場面で活用できる実践的な内容です。各例では動物の名前を使ったわかりやすいデータを使っているので、実際にコードを実行して動かしてlen関数の理解を深めましょう。

データ検証での活用例

入力されたデータの検証にlen関数を活用する例です。ユーザーから受け取ったデータが、適切な文字数になっているかを確認できます。

def validate_animal_name(name): if len(name) < 2: return "動物名が短すぎます" elif len(name) > 8: return "動物名が長すぎます" else: return f"{name}は有効な動物名です" print(validate_animal_name("イヌ")) print(validate_animal_name("ライオン")) print(validate_animal_name("カ")) print(validate_animal_name("イリオモテヤマネコ"))

出力結果

イヌは有効な動物名です
ライオンは有効な動物名です
動物名が短すぎます
動物名が長すぎます

リスト操作での条件分岐

この例では、リストの要素数に基づき、len関数で動物のリストが空かどうかをチェックして、プログラムの処理を分岐させています。

def process_animal_list(animals): if len(animals) == 0: return "動物リストが空です" elif len(animals) == 1: return f"動物は{animals[0]}だけです" else: return f"{len(animals)}匹の動物がいます: {', '.join(animals)}" animals1 = [] animals2 = ["トラ"] animals3 = ["ゾウ", "キリン", "サイ"] print(process_animal_list(animals1)) print(process_animal_list(animals2)) print(process_animal_list(animals3))

出力結果

動物リストが空です
動物はトラだけです
3匹の動物がいます: ゾウ, キリン, サイ

文字列処理での活用

文字列の長さに基づいて、表示形式を変える例です。動物の名前の長さによって、表示する内容を調整しています。

def format_animal_display(animal_names): result = [] for name in animal_names: if len(name) <= 3: result.append(f"短い名前: {name}") else: result.append(f"長い名前: {name}") return result animals = ["ネコ", "ハムスター", "イヌ", "カンガルー"] formatted = format_animal_display(animals) for item in formatted: print(item)

出力結果

短い名前: ネコ
長い名前: ハムスター
短い名前: イヌ
長い名前: カンガルー

辞書データの集計処理

辞書のキーの数や、値の長さを元に動物の分類データを集計する例です。

animal_groups = { "哺乳類": ["イヌ", "ネコ", "ゾウ"], "鳥類": ["ツバメ", "ワシ"], "魚類": ["マグロ", "サケ", "タイ", "アジ"] } total_groups = len(animal_groups) total_animals = sum(len(animals) for animals in animal_groups.values()) print(f"動物の分類数: {total_groups}") print(f"総動物数: {total_animals}")

出力結果

動物の分類数: 3
総動物数: 9

ループ制御での応用

この例は、len関数を使ってループの制御を行うことで、インデックス番号付きで動物のリストを表示します。

zoo_animals = ["パンダ", "コアラ", "ペンギン", "フラミンゴ"] for i in range(len(zoo_animals)): animal = zoo_animals[i] position = i + 1 total = len(zoo_animals) print(f"{position}/{total}: {animal}") print(f"動物園には合計{len(zoo_animals)}匹の動物がいます")

出力結果

1/4: パンダ
2/4: コアラ
3/4: ペンギン
4/4: フラミンゴ
動物園には合計4匹の動物がいます

よくある質問(Q&A)

Q: len関数が使えないデータ型はありますか?

A: 整数、浮動小数点数、ブール値などの単一の値にはlen関数は使用できません。len関数はシーケンス型やコレクション型(文字列、リスト、辞書、タプル、セットなど)に対してのみ使用可能です。

# 使用できない例 number = 42 # len(number) # TypeError が発生

Q: 空の文字列やリストの長さは何になりますか?

A: 空の文字列やリスト、辞書などの場合、len関数は0を返します。これは要素が何も含まれていないことを意味し、条件分岐で空かどうかを判定する際によく使用されます。

empty_list = [] empty_string = "" print(len(empty_list)) # 0 print(len(empty_string)) # 0

Q: 日本語文字の長さは正しく測定されますか?

A: はい、Python 3では日本語文字も1文字として正確にカウントされます。ひらがな、カタカナ、漢字すべて1文字として扱われ、全角・半角に関係なく適切に長さが測定されます。

Q: ネストしたリストの長さはどう計算されますか?

A: ネストしたリスト(リストの中にリストがある場合)では、内部のリストも1つの要素として扱われます。内部リストの要素数は含まれず、最外層の要素数のみがカウントされます。

nested_list = [["ネコ", "イヌ"], ["ウマ"], "ウサギ"] print(len(nested_list)) # 3(内部の要素数は含まない)

Q: len関数の処理速度は速いですか?

A: len関数は非常に高速です。Pythonのオブジェクトはサイズ情報を内部で保持しているため、len関数は要素を数え直すのではなく、保存されている値を返すだけです。そのため、大きなデータでも瞬時に結果が得られます。

まとめ

この記事では、Pythonのlen関数について、基本的な使い方から応用例まで幅広く解説してきました。len関数は一見するとシンプルな機能ですが、データ処理において非常に重要な役割を果たします。len関数をマスターすることで、Pythonでのデータ処理能力が大幅に向上します。

ポイント

  • len(オブジェクト)というシンプルな構文で文字列・リスト・辞書の長さを取得できる
  • None型やint型など長さを持たない型にはTypeErrorが発生するため、事前にデータ型をチェックすることが重要
  • O(1)という優れたパフォーマンス特性をもち、要素数に関係なく高速に処理できる
  • isinstance関数やhasattr関数を使った型チェックにより、エラーを事前に防止することができる
  • データの検証や条件分岐、ループの制御など、実用的な活用パターンが豊富にある

文字列操作やリストの処理、条件分岐など、プログラミングの基礎となる部分でよく使われる関数なので、しっかりと理解を深めておきましょう。エラーを検出して適切な処理を行う仕組み(エラーハンドリング)や、データの型をチェックする方法も一緒に覚えることで、より安定して壊れにくいコードを書けるようになります。

プログラミングスキルをさらに伸ばしたい方は、実際にコードを書いて練習することが重要です。手軽に学べる「paizaラーニング」などのオンライン学習プラットフォームを活用すれば、効率的にプログラミングスキルを身につけられるでしょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. ナレッジ
  3. Pythonのナレッジ記事一覧
  4. Pythonのlen関数の使い方を徹底解説!初心者向け基本から応用まで