【Python】listサイズを取得する方法

【Python】listサイズを取得する方法

公開: 更新:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座

Pythonでリストに格納されているデータ数を把握したい場面は、ループ処理の準備や空かどうかの判定など、データ処理の実装で頻繁に発生します。要素数やデータ量を調べる手段としてよく使われるのが「len関数」や「sysモジュール」で、格納された個数の確認やメモリ使用量の取得を簡単に実現可能です。

この記事では、Pythonのリストにおけるデータサイズの基本的な確認方法を解説していきます。データ個数のカウントだけではなく、大規模データで気になるバイト単位のメモリ確認方法など、サンプルコード付きで解説していきますので、ぜひ参考にしてください。



Pythonでlistのサイズを取得する方法

Pythonのリストにおけるデータ量を確認するには、用途に合わせて適切な関数を使い分けるのが基本となります。代表的な取得方法は以下の3つです。

  1. len()関数で要素数や長さを取得する
  2. sys.getsizeof()でメモリ使用量を確認する
  3. リストが空かどうか判定する

これらの関数を理解することによって、目的に応じた適切なサイズ確認が可能です。それぞれの使い方について、順番に見ていきましょう。

len()関数で要素数や長さ(length)を取得する

リストや配列に入っているデータの個数(length)を数える際には、組み込みのlen()関数を使用します。この関数は引数に渡したオブジェクトの長さを返す仕組みです。

リストのデータ個数を取得する基本的な使い方は、以下の通りです。

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

上記のコードでは、5つの整数が含まれたリストを定義し、その要素数を取得しています。処理結果として変数には5が代入され、画面に出力されるという流れです。

この処理は内部的に定数時間で動作するため、要素が非常に多い場合でも高速に個数を取得できます。また、個数が0であるかを確認して、中身が空かどうかの判定に利用することも可能です。

sys.getsizeof()でメモリ使用量を確認する

要素数ではなく、リストオブジェクト自体が消費しているメモリのバイト数を調べたい場合は、sysモジュールのgetsizeof()関数を活用します。大規模なデータを扱う際のメモリチューニングなどに役立ちます。

メモリ使用量を確認する具体的なコードは、以下の通りです。

import sys

my_list = [1, 2, 3, 4, 5]
memory_size = sys.getsizeof(my_list)
print(memory_size)  # 出力例: 104 (CPython 3.12 / 64bit環境。バージョンや環境により異なります)

上記のコードでは、sysモジュールをインポートしてから対象のリストを引数に渡しています。実行すると、リスト自体がメモリ上で占有しているバイト単位の容量を取得可能です。

ここで得られる数値はリストというコンテナ自体のサイズであり、各要素への参照(ポインタ)のサイズは含みますが、参照先オブジェクト自体のデータ本体は含まない仕様です。GC(ガベージコレクタ)が管理するオブジェクトでは、getsizeof()は常に__sizeof__()より大きい値を返す点にも注意が必要です。

厳密な全体メモリを計算したい場合は、要素ごとのサイズも個別に取得して加算するアプローチが求められます。リスト内の各要素に対してgetsizeof()を適用し、合算することによって、実際のメモリ消費量をより正確に見積もることが可能です。


Python研修一覧はこちら

目的に合うPython研修を一覧形式から探したい方は、ぜひご利用ください。

Python研修を比較する

Java研修一覧はこちら

目的に合うJava研修を一覧形式から探したい方は、ぜひご利用ください。

Java研修を比較する

PHP研修一覧はこちら

目的に合うPHP研修を一覧形式から探したい方は、ぜひご利用ください。

PHP研修を比較する

新入社員研修

目的に合う新入社員研修を一覧形式から探したい方は、ぜひご利用ください。

新入社員研修を比較する

全ての研修からも探したい方はこちら

リストが空かどうか判定する

リストにデータが入っているか、空であるかを判定する際にも、len()関数が役立つ場面は多いです。取得した要素数が0と等しいかを条件分岐で確認する手法と、Pythonの真偽値評価を利用する手法の2つがあります。

空かどうかを判定するコード例は、以下の通りです。

empty_list = []

# PEP 8推奨の書き方(Correct)
if not empty_list:
    print("リストは空です")
else:
    print("データが存在します")

# 明示的に長さで比較する方法(PEP 8では非推奨・Pythonらしくない書き方)
if len(empty_list) == 0:
    print("リストは空です")

上記のコードでは、if not empty_list:if len(empty_list) == 0:の2つのアプローチを示しています。空リストの判定には両方とも使えますが、公式が推奨しているのは前者の書き方です。

Python公式のコーディング規約であるPEP 8では、空のシーケンスの判定について、次のように述べています。

For sequences, (strings, lists, tuples), use the fact that empty sequences are falsy.

出典:PEP 8 Programming Recommendations

つまり、if not seq:を「Correct」、if len(seq):形式を「Wrong」と明示しており、空判定には暗黙の真偽値評価を使う方法が推奨されています。len()を使った比較はPythonらしくない書き方として非推奨です。

Pythonリスト内の特定の要素の数を数える

Pythonでリストの全体のデータ数ではなく、特定の値がいくつ含まれているかを数える場合は、専用のメソッドや内包表記を活用します。

特定の要素を抽出したり、条件に一致するデータを集計したりする処理は、データ分析などで頻繁に必要となる操作です。

特定の要素の数を数える主な方法は、以下の通りです。

  • count()メソッドを使用する
  • 条件を指定してカウントする

それぞれの手法とコード例について、詳しく解説します。目的に応じて使い分けることによって、効率よくデータを集計できます。

count()メソッドを使用する

リスト内に含まれる特定の値の出現回数を取得するには、Pythonの公式ドキュメント(シーケンス型)でも紹介されているcount()メソッドを使用します。引数にカウントしたい値を指定するだけで、リストの中から一致する要素の個数を返す仕組みです。

count()メソッドの基本的な使い方は、以下の通りです。

my_list = [1, 2, 2, 2, 4]
target_count = my_list.count(2)
print(target_count)  # 出力結果: 3

上記のコードでは、リストの中から数値の2がいくつあるかを数えて結果を出力しています。リスト[1, 2, 2, 2, 4]に2が3つ含まれているため、3が出力されます。

文字列や他のデータ型が混在しているリストでも、完全に一致する要素だけを正確にカウントします。部分一致ではなく厳密な等価比較(==)で判定されるため、が異なる値は別の要素として扱われる仕様です。

条件を指定してカウントする

特定の値との完全一致ではなく、一定の条件を満たす要素の数を数えたい場合は、リスト内包表記ジェネレータ式を組み合わせて処理します。

組み込み関数のsum()を併用することによって、条件式が真となる要素の個数を合計するアプローチが一般的です。

条件を指定してカウントするコード例は、以下の通りです。

numbers = [10, 20, 25, 30, 5, 15]
# 20以上の要素を数える
count_over_20 = sum(1 for x in numbers if x >= 20)
print(count_over_20)  # 出力結果: 3

上記のコードでは、リスト[10, 20, 25, 30, 5, 15]の要素を順番に評価し、20以上(20・25・30の3件)という条件を満たした場合に1を足し合わせることで件数を取得しています。

複雑な条件分岐が必要な場面でも、この記法を活用すれば簡潔にコードを記述できます。filter()関数で条件抽出してからlen()で個数を取得する方法もありますが、ジェネレータ式とsum()の組み合わせの方がメモリ効率に優れています。


Python基礎・実践(Django)

企業・法人向けのPython研修では、基礎から応用まで体系的に学べます。

Python研修の詳細

DX社員研修

企業・法人向けのDX研修では、実務に繋がるリスキリングでITレベルを向上させます。

DX研修の詳細

Javaエンジニア育成研修

企業・法人向けのJavaエンジニア育成研修では、Javaの基礎から応用まで確実に習得できます。

Java研修の詳細

新卒・新入社員向け研修

企業・法人に新入社員・新卒社員に向けたプログラミング研修を提供しています。

新入社員研修の詳細

コードキャンプのIT研修を全て見る

Pythonで多次元リストのサイズを確認する方法

Pythonで複雑なデータ構造を扱う際、多次元で構成されたリストの構造を正確に把握しておく必要があります。特にデータ分析などで用いられる多次元リストでは、行と列の数を適切に管理することが前提となります。

このセクションで解説する内容は、以下の通りです。

  • 二次元リストのsizeを確認する
  • NumPy配列の要素数を取得する

それぞれの確認方法について、具体的なコード例を交えて見ていきましょう。ネストされたリストの長さ(length)を正確に把握する手順を解説します。

二次元リストのsizeを確認する

Pythonの標準機能では、多次元リスト全体を一括で計測する専用のプロパティは用意されていない仕様です。そのため、リストの長さを取得するlen()関数を組み合わせて計算します。

二次元リスト全体の要素数をカウントする基本的な使い方は、以下の通りです。

matrix = [[1, 2, 3], [4, 5, 6]]
total_size = sum(len(row) for row in matrix)
print(total_size)  # 6

上記のコードでは、内包表記を用いて各行の長さ(length)を取得し、合計値を算出しています。[[1, 2, 3], [4, 5, 6]]は2行3列の構造なので、合計6が出力される仕組みです。

リスト内に異なる長さのデータが含まれている場合でも、行ごとにlen()で個数を取得して合算するため、正確な要素数を把握できるのが特徴です。

なお、階層がさらに深くなる場合は、再帰関数などを活用して構造を解析する手法が効果的です。データの構造に合わせて適切なアプローチを選択するのがおすすめです。

NumPy配列のshapeと要素数を取得する

より高度な数値計算を行う場面では、NumPyライブラリを活用するケースが一般的です。NumPy配列(ndarray)を利用すると、shapesize属性から即座に構造を把握できます。

多次元の配列データで次元の構造と全体の個数を確認する使い方は、以下の通りです。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)  # (2, 3)
print(arr.size)   # 6

上記のコードでは、shape属性で行数と列数のタプル(2, 3)を取得し、size属性で全体の要素数6を表示しています。リストのようにループ処理を記述する必要がないため、大規模なデータでも効率よく計算できる仕様です。

次元の構造を頻繁に確認する環境では、標準のリストよりもNumPyの導入を検討すると開発がスムーズに進むはずです。扱うデータの性質に合わせて使い分けてみましょう。

Pythonのlistサイズに関するよくある質問

len()関数はリスト以外のデータ型にも使えますか?

はい、len()関数は文字列やタプル、辞書など他のデータ型に対しても適用可能です。中身のデータ数を取得する際、内部的にオブジェクトが保持している長さ情報を参照するため、要素数に関係なく定数時間で素早く動作するのが特徴です。

Pythonのリストに格納できる要素数の上限はありますか?

リストに格納できる要素数には、実行環境のメモリ容量が実質的な制約となります。sys.maxsizeという定数がシーケンスの最大長を制約しており、64ビット環境では9,223,372,036,854,775,807(2の63乗マイナス1)です。

ただし、実際にはこの理論上限に達するはるか前にメモリが枯渇するため、利用可能な物理メモリがリストサイズの実質的な上限となります。

※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

企業・法人向けのIT・プログラミング・生成AI研修を探す、比較する - IT・プログラミングを知って学べるコネクトメディア CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 3.5日の研修で、年間1,600時間の削減効果が見込まれる。東京きらぼしフィナンシャルグループのDX人材育成事例 - IT・プログラミングを知って学べるコネクトメディア 配属3ヶ月で30%の生産性向上を実現するいよぎんコンピュータサービスの新人研修に迫る - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する