・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2024年03月24日に投稿されました。)
PythonでList(リスト)の指定した要素の格納数をカウントするにはcount()使用します。
count()とは、リストに格納されている指定した要素の格納数を調べる関数になります。
そのため、count()で指定した要素がリスト内に何個格納されているかを調べることが可能になります。
そして、count()は2次元List(リスト)や3次元List(リスト)のような多次元リストから指定した要素をカウントすることもできます。
見つからなかった場合でもエラーが発生することなく使用できるため、もしリストから指定した要素の格納数を調べる場合はcount()を使用しましょう。
今回はPythonのcount()でリスト(List)の指定した要素の格納数をカウントする方法について紹介していきます。
List(リスト)の指定した要素の格納数を調べたい場合
count()とは
count()とはリストに格納されている指定した要素の格納数をカウントする関数になります。
そのため、リスト内に指定した要素がいくつ格納されているのかの情報を取得することができます、
count()の書き方
count()の書き方は下記のようになります。
1 | 対象のリスト.count('カウントする要素') |
対象のリストの後ろにcount()と追記し、括弧の中に必須のパラメータを指定することで使用することができます。
count()のパラメータ
count()のパラメータは下記のようになります。
- カウントする要素:(必須)
リスト内でカウントしたい要素を指定する。
append()は必須なパラメータとして「カウントする要素」を指定します。
count()の返り値
count()の返り値は指定した要素の格納数になります。
count()でリスト(List)の指定した要素の格納数をカウントするサンプルコード
count()でリスト(List)の指定した要素の格納数をカウントするサンプルコードをご紹介します。
ここでは下記の2パターンでcount()を使用します。
- カウントする要素がリストに存在する場合
- カウントする要素がリストに存在しない場合
カウントする要素がリストに存在する場合
カウントする要素がリストに存在する場合にcount()を使用すると、カウントする要素の格納数を返します。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト') list1 = ['JavaScript', 'Java', 'PHP', 'Python', 'C#', 'Java'] print(list1) print("● count()使用後") list1_cnt = list1.count('Java') print('Java: ' + str(list1_cnt)) |
実行結果
count()でリスト(List)の指定した要素の格納数をカウントしています。
今回は指定した要素である「Java」が存在するため、格納数である「2」が表示されています。
カウントする要素がリストに存在しない場合
カウントする要素がリストに存在しない場合にcount()を使用すると、「0」を返します。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト') list1 = ['JavaScript', 'Java', 'PHP', 'Python', 'C#'] print(list1) print("● count()使用後") list1_cnt = list1.count('Swift') print('Swift: ' + str(list1_cnt)) |
実行結果
count()でリスト(List)の指定した要素の格納数をカウントしています。
今回は指定した要素である「Swift」が存在しないため、格納数である「0」が表示されています。
count()で多次元リスト(List)の指定した要素の格納数をカウントするサンプルコード
count()は1次元リストだけでなく、多次元リストの指定した要素の格納数を取得することができます。
多次元List(リスト)の場合はリストの中にリストが存在するため、繰り返し処理で深い階層にアクセスして処理を行う必要があります。
そのため、ここではcount()で多次元リスト(List)の指定した要素の格納数をカウントするサンプルコードをご紹介します。
2次元リスト(List)の場合
2次元リスト(List)に対してcount()を使用します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import itertools print('● 対象の2次元リスト') list1 = [['JavaScript', 'C#'],['Python', 'Swift'],['Ruby', 'Python']] print(list1) print('● count()使用後(各1次元リスト)') for list1_n in list1: list1_n_cnt = list1_n.count('Python') print('Python:' + str(list1_n_cnt)) print('● count()使用後(2次元リスト)') list1_cnt = list1.count(['Ruby', 'Python']) print("['Ruby', 'Python']: " + str(list1_cnt)) print('● count()使用後(1次元リスト全体)') list1_flat = list(itertools.chain.from_iterable(list1)) list1_ft_cnt = list1_flat.count('Python') print('Python:' + str(list1_ft_cnt)) |
実行結果
count()で2次元(リスト)に指定した要素を追加しています。
そのため、下記のような結果で表示されています。
- 1次元リストの場合
「Pyhton」の格納数を各リストで調べるため、「0」「1」「1」が表示。 - 2次元リストの場合
「[‘Ruby’, ‘Python’]」の格納数を調べるため、「1」が表示。 - リスト全体の場合
「Python」の格納数をリスト全体で調べるため、「2」が表示。
また、今回はitertoolのfrom_iterable()を使用して2次元リストを1次元リストへ変換してからcount()を使用しています。
3次元リスト(List)の場合
3次元リスト(List)に対してcount()を使用します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import itertools print('● 対象の3次元リスト') list1 = [ [['JavaScript', 'C#'],['Python', 'Swift'], ['Python']], [['Kotlin', 'Go', 'Python'],['C', 'C++'], ['R', 'Python']], [['Python'], ['Swift']] ] print(list1) print('● count()使用後(各1次元リスト)') for list1_n in list1: for list1_nm in list1_n: list1_nm_cnt = list1_nm.count('Python') print('Pyhton: ' + str(list1_nm_cnt)) print('● count()使用後(各2次元リスト)') for list1_n in list1: list1_n_cnt = list1_n.count(['Python']) print("['Python']: " + str(list1_n_cnt)) print('● count()使用後(3次元リスト)') list1_cnt = list1.count([['Python'], ['Swift']]) print("[['Python'], ['Swift']]: " + str(list1_cnt)) print('● count()使用後(リスト全体)') list1_flat = list(itertools.chain.from_iterable(list1)) list1_flat = list(itertools.chain.from_iterable(list1_flat)) list1_ft_cnt = list1_flat.count('Python') print('Python: ' + str(list1_ft_cnt)) |
実行結果
count()で3次元リストの指定した要素の格納数を取得しています。
そのため、下記のような結果で表示されています。
- 1次元リストの場合
「Pyhton」の格納数を各リストで調べるため、「0」「1」「1」「」「」「」が表示。 - 2次元リストの場合
「[‘Python’]」の格納数を各リストで調べるため、「1」「0」「1」が表示。 - 3次元リストの場合
「[[‘Python’], [‘Swift’]]」の格納数をリストで調べるため、「1」が表示 - リスト全体の場合
「Python」の格納数をリスト全体で調べるため、「5」が表示。
また、今回はitertoolのfrom_iterable()を使用して2次元リストを1次元リストへ変換してからcount()を使用しています。
count()でリスト(List)の指定した複数要素の格納数をカウントする場合
count()でリスト(List)の指定した複数要素の格納数をカウントするには繰り返し処理を使用します。
格納数を取得したい要素をリスト化し、繰り返し処理内でcount()を使用することで指定した複数要素の格納数を取得することが可能になります。
● main.py
1 2 3 4 5 6 7 8 9 | print('● 対象のリスト') list1 = ['JavaScript', 'PHP', 'Java', 'PHP', 'Python', 'C#', 'Java'] print(list1) print("● count()使用後") list1_cnt_list = ['Swift', 'JavaScript', 'PHP'] for list1_cnt_item in list1_cnt_list: list_cnt = list1.count(list1_cnt_item) print(list1_cnt_item + ':' + str(list_cnt)) |
実行結果
count()でリスト(List)の指定した複数要素の格納数をカウントしています。
そのため、「Swift」の格納数である「0」、「JavaScript」の格納数である「1」、「PHP」の格納数である「2」が表示されています。
count()を使用した実際のケース
count()を使用した実際のケースについてご紹介します。
例えば、count()を使用して回答したアンケートで良くない評価があるかないかを確認します。
● index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <!DOCTYPE html> <html lang="ja"> <head> <title>count()でList(リスト)から対象の要素を追加する</title> <meta charset="utf-8"/> </head> <body> <h2>アンケートの回答をお願いします。</h2> <form action="/result" method="POST"> <p>Q1: お店の雰囲気について</p> <div> <input type='radio' name='item1' value= 5>とても良い <input type='radio' name='item1' value= 4>良い <input type='radio' name='item1' value= 3>普通 <input type='radio' name='item1' value= 2>悪い <input type='radio' name='item1' value= 1>とても悪い </div> <p>Q2: お店のスタッフについて</p> <div> <input type='radio' name='item2' value= 5>とても良い <input type='radio' name='item2' value= 4>良い <input type='radio' name='item2' value= 3>普通 <input type='radio' name='item2' value= 2>悪い <input type='radio' name='item2' value= 1>とても悪い </div> <p>Q3: ご注文された料理について</p> <div> <input type='radio' name='item3' value= 5>とても良い <input type='radio' name='item3' value= 4>良い <input type='radio' name='item3' value= 3>普通 <input type='radio' name='item3' value= 2>悪い <input type='radio' name='item3' value= 1>とても悪い </div> <button type="submit">送信</button> </form> </body> </html> |
● result.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html> <html lang="ja"> <head> <title>count()でList(リスト)から対象の要素を追加する</title> <meta charset="utf-8"/> </head> <body> {% if one == 0 and zero == 0 %} <h2>ありがとうございました。</h2> {% else %} <h2>アンケートの回答をお願いします。</h2> <form action="/result2" method="POST"> <p>良くないと評価した理由を教えてください。</p> <textarea rows="10" cols="50"></textarea> <button type="submit">送信</button> </form> {% endif %} </body> </html> |
● result2.html
1 2 3 4 5 6 7 8 9 10 | <!DOCTYPE html> <html lang="ja"> <head> <title>count()でList(リスト)から対象の要素を追加する</title> <meta charset="utf-8"/> </head> <body> <h2>ありがとうございました。</h2> </body> </html> |
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | from flask import Flask, render_template, request app = Flask(__name__) ans_list = [] one_cnt = '' zero_cnt = '' @app.route('/') def index(): ans_list.clear() return render_template('index.html') @app.route('/result', methods=['POST']) def result(): try: item1 = request.form.get('item1') ans_list.append(item1) item2 = request.form.get('item2') ans_list.append(item2) item3 = request.form.get('item3') ans_list.append(item3) print(ans_list) one_cnt = ans_list.count('1') zero_cnt = ans_list.count('2') except Exception as e: print(e) finally: return render_template('result.html', one = one_cnt, zero = zero_cnt) @app.route('/result2', methods=['POST']) def result2(): return render_template('result2.html') if __name__ == '__main__': app.run() |
実行結果
実行結果
count()で回答したアンケートで良くない評価があるかないかを確認しています。
今回は下記のような流れで処理を行っています。
- requestでラジオボタンで選択した項目の値を取得し、append()でリストに追加。
- count()でリストに「1」と「0」の要素が0個であるかどうかを確認
(両者とも「0」である場合は「3」で、それ以外の場合は「4」へ) - 完了画面を表示して終了。
- 評価が良くなかった理由を記載する画面を表示して、記載後に完了画面を表示して終了。
そのため、評価が「普通」から「とても良い」だけを選択すると、回答後に完了画面がすぐに表示され、「とても悪い」か「悪い」を1つでも選択すると良くないと判断した理由を記載する画面が表示されます。
append()について詳しく知りたい場合は下記の記事をご参考ください。
count()を文字列に対して使用する場合
count()を文字列に対して使用すると、文字単位で出現回数をカウントするようになります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 | print('● 対象の文字列') text1 = 'Pythonのcount()' print(text1) print("● count()使用後-1") text1_cnt1 = text1.count('t') print('t:' + str(text1_cnt1)) print("● count()使用後-2") text1_cnt2 = text1.count('Python') print('Python:' + str(text1_cnt2)) |
実行結果
count()を文字列に使用して、指定した文字の出現回数をカウントしています。
そのため、「t」の出現回数である「2」と「Python」のの出現回数である「1」が表示されています。
リスト(List)の各要素の格納数をカウントする場合
リスト(List)の各要素の格納数をカウントするには、Counter()を使用します。
Counter()とは、リスト内に格納されている全ての要素の格納数を集計することができるCollectionsクラスの関数になります。
そのため、対象のリスト内の「要素」をキー、「個数」を値とした辞書型で返されます。
● main.py
1 2 3 4 5 6 7 8 9 | import collections print('● 対象のリスト') list1 = ['JavaScript', 'Java', 'PHP', 'Python', 'C#', 'PHP', 'Java'] print(list1) print("● Counter使用後") list1_counter = collections.Counter(list1) print(list1_counter) |
実行結果
Counter()でリスト(List)の各要素の格納数をカウントしています。
そのため、下記のような結果が表示されています。
- 「Java」は2つ格納されているため、「Java: 2」
- 「PHP」は2つ格納されているため、「Java: 2」
- 「JavaScript」は1つ格納されているため、「JavaScript: 1」
- 「Python」は1つ格納されているため、「Python: 1」
- 「C#」は1つ格納されているため、「C#: 1」
もし、Counter()について詳しく知りたい場合は下記の記事をご参考ください。
まとめ
● count()とはリストに格納されている指定した要素の格納数をカウントする関数である。
● count()を使用する場合は、下記の引数を指定して使用する。
・カウントする要素:(必須)
● カウントする要素が存在する場合にcount()を使用すると、リスト内に格納されたカウントする要素の格納数を返す。
● カウントする要素が存在しない場合にcount()を使用すると、「0」を返す。
● count()は1次元リストだけでなく、な多次元リストの要素の格納数も取得することができる。
(しかし、全体から要素の格納数をカウントするにはフラットにする必要がある)
● count()でList(リスト)の指定した複数要素の格納数をカウントするには繰り返し処理を使用する。
● count()を文字列に対して使用すると、文字単位で出現数をカウントする。
● リストの各要素の格納数をカウントするにはcollectionsクラスのCounter()を使用する。