Pythonで独自のlen()関数を実装する方法
Pythonには、文字列やリストの長さを取得するための組み込み関数 len() が用意されています。しかし、この仕組みを深く理解するために、独自のカスタム len() 関数を自作してみるのはとても良い学習になります。まずは以下の手順に沿って、自分で実装に挑戦してみましょう。
実装の手順
ユーザーから入力された文字列・リスト・タプルなどのイテレータを取得します。
任意の名前で関数を定義し、その関数にイテレータを渡して呼び出します。
- カウント用の変数を0で初期化します。
- イテレータの末尾に達するまでループ処理を行います。
- ループが1回回るごとにカウントを1ずつ増やします。
- 最後にカウント値を返します。
コード例
## イテレータの長さを計算する関数
def length(iterator):
## カウントを0で初期化
count = 0
## イテレータを順番に走査
for item in iterator:
## カウントを1つ増やす
count += 1
## イテレータの長さを返す
return count
if __name__ == "__main__":
## ユーザーから入力を受け取る
iterator = input("Enter a string:- ")
## length関数を呼び出して結果を表示
print(f"Length of {iterator} is {length(iterator)}")
上記のプログラムを実行すると、次のような結果が得られます。
実行結果
Enter a string:- tutorialspoint
Length of tutorialspoint is 14
仕組みの解説
このカスタム関数の動作は非常にシンプルです。for ループはイテレータから要素を1つずつ取り出し、要素が尽きた時点で自動的にループを終了します。そのため、ループが何回実行されたかを数えれば、それがそのままイテレータの長さ(要素数)になります。
なお、この手法は文字列だけでなく、リストやタプルなど、for ループで反復処理できるあらゆるオブジェクトに対して利用できます。Pythonの len() 関数も内部的には同様の考え方に基づいており、オブジェクトが持つ __len__() メソッドを呼び出して長さを取得しています。
-
Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説
本記事では、Python標準ライブラリに用意されているissubset()関数の仕組みと使い方について詳しく解説します。 issubset()メソッドは、あるセット(集合)のすべての要素が、引数として渡した別のセットにも含まれている場合にブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 下の図では、BはAの部分集合です。もしAとBが同一のセットであれば、両者は互いに部分集合の関係にあるといえます。つまり、両方のセットがまったく同じ要素を持っているということを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値
-
Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法
この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print