Pythonでよく使う!組み込み関数12選を徹底理解(初心者にもわかりやすく)【Python入門・応用19】

こんにちは。キノコードです。
この動画では、Pythonの組み込み関数について説明します。

組み込み関数とは

Pythonには頻繁に利用する便利な関数が標準で用意されています。
このような標準で用意されている関数のことを「組み込み関数」と呼びます。
組み込み関数は、インポートや定義をしなくても自由に呼び出して使用できます。
print関数やrange関数なども組み込み関数の一つです。
組み込み関数の中でよく使われる関数をいくつか確認していきましょう。

print関数

まず、print関数について説明します。
print関数は数値や文字列、変数などを出力する関数です。
コードを書いて確認してみましょう。

print("Python", "Ruby", "PHP")
/* Your code... */
print("Java")

まず、print関数の引数に文字列のPython、Ruby、PHPを渡します。
それぞれの要素は,(カンマ)で区切ります。
また、もう一度print関数を使い、引数に文字列のJavaを渡します。
結果を確認してみましょう。
実行します。

結果が表示されました。
デフォルトではprint関数の結果は1行で表示され、それぞれの引数は半角スペースで区切られます。
また、print関数の最後の引数の後は改行されるので、Javaは次の行に表示されています。

print("Python", "Ruby", "PHP", sep="-")
print("Java")

引数sepに文字列を渡すと、それぞれの引数の間を指定した文字列で埋められます。
デフォルトではこの引数sepには半角スペースが渡されています。
先ほどのprint関数の引数sepに文字列で-(ハイフン)を渡してみましょう。
実行します。

Python、Ruby、PHPがハイフンで区切られて表示されました。

print("Python", "Ruby", "PHP", sep="-", end="-")
print("Java")

引数endに文字列を渡すと、最後の引数の後ろに指定した文字列を表示できます。
デフォルトではこの引数endには(バックスラッシュ)とnが渡されています。
(バックスラッシュ)とnで改行を表しています。
先ほどのprint関数の引数endに文字列で-(ハイフン)を渡してみましょう。
実行します。

2行目に書いたJavaも改行されずに、全ての文字列がハイフンで区切られて表示されました。

type関数

次に、type関数について説明します。
type関数は、引数に渡したオブジェクトの型を返す関数です。
コードを書いて確認してみましょう。

print(type("Hello"))
print(type(10))
print(type([1, 2, 3]))
print(type({'Python':1, 'Ruby':2, 'PHP':3}))

<.div>type関数の引数に、文字列、数値、リスト、辞書のオブジェクトを渡し、print関数で表示させてみましょう。
実行します。

それぞれのオブジェクトの型が表示されました。

print(type("Hello") is str)
print(type("Hello") is int)

また、type関数とis演算子を組み合わせることで、引数に渡したオブジェクトの型が正しいかどうかを判定することができます。
1行目でHelloが文字列かどうかを判定します。
また、2行目でHelloが数値かどうかを判定し、結果を表示させてみましょう。
実行します。

Helloは文字列なので1行目の記述ではTrue、2行目の記述ではFalseと表示されました。

float関数

次に、float関数について説明します。
float関数は、引数に渡した値を浮動小数点数に変換する関数です。
浮動小数点数とは、コンピューターが理解できるように少数を数字の並びと小数点の位置に分割して表現する方式です。
コンピューターの内部では、数値を2進数に変換して扱うため、このような方式が採られています。
ただし、結果は10進数の数値で表示されるため、基本的には普通の少数のように扱っていただいて問題ありません。
コードを書いて確認してみましょう。

a = "10.0"

print(float(a))
print(type(float(a)))

変数aに文字列の10.0を代入します。
float関数の引数にaを渡し、print関数で表示してみましょう。
また、type関数を使ってデータ型を確認してみましょう。
実行します。

結果が表示されました。
float関数を使って、文字列の10.0が浮動小数点数の10.0に変換されていることがわかります。

print(10 / 3)
print(0.1 * 2 == 0.2)
print(0.1 * 3 == 0.3)

また、浮動小数点数の注意点について簡単に説明します。
まず、10割る3の結果を表示します。
次に、0.1掛ける2、==(イコール2つ)、0.2の結果を表示します。
最後に、0.1掛ける3、==(イコール2つ)、0.3の結果を表示してみましょう。
実行します。

10割る3は3.333...と、3が無限に続くはずですが、最後の数字は5になっています。
また、0.1掛ける2は0.2になるので、2行目はTrueと表示されています。
しかし、0.1掛ける3は0.3になりますが、3行目はFalseと表示されています。
これはバグではありません。
ほとんどの少数は2進数で表そうとすると、循環小数になります。
そこでコンピューター内部では少数は近似値で表されています。

print(0.1 * 2)
print(0.1 * 3)

実際に、0.1掛ける2と、0.1掛ける3がどのような値になっているか確認してみましょう。
実行します。

0.1掛ける2は0.2、0.1掛ける3は0.3000...となり、末尾に4がついていることがわかります。
0.1はコンピューター内部で0.1よりも少しだけ大きな値で近似されています。
0.1に2を掛けた場合は、誤差は無視できるほど小さいので、0.2と表示されます。
一方、0.1に3を掛けた場合は、誤差は無視できなくなるので、0.3よりも少しだけ大きい値と表示されます。
このような浮動小数点数の注意点についても理解しておきましょう。

round関数

次に、round関数について説明します。
round関数は、小数や整数を任意の値に丸める関数です。
丸めるとは、ある値に対して信頼できる桁数までを取り出すということです。
例えば、1.234という値に対して、少数第1位に丸めると1.2になります。
コードを書いて確認してみましょう。

print(round(1.234, 2))

round関数の第一引数に丸めたい数値を渡し、第二引数に小数第何位に丸めるかを指定します。
1.234という値を、少数第2位に丸めて表示してみましょう。
実行します。

1.23と表示されました。

print(round(1.5))
print(round(2.5))
print(round(2.501))

また、round関数の第二引数を省略すると整数に丸められます。
round関数の引数に1.5を渡し、結果を表示します。
また、round関数の引数に2.5と2.501も渡し、結果を表示してみましょう。
実行します。

2、2、3と表示されました。
このように第二引数を省略すると、整数に丸められます。
ただし、丸める方法は四捨五入ではなく、できるだけ近い整数に丸められます。
また、1.5や2.5のように、2つの整数の真ん中にある場合は偶数に丸められます。
従って、1.5と2.5は両方とも2に丸められます。
2.501は2よりも3の方が近いので、3に丸められます。

print(round(1234.56, -2))

round関数の第二引数に負の値を渡すと、整数部の指定となります。
-1を渡すと10の位に丸められ、-2を渡すと100の位に丸められます。
round関数の第一引数に1234.56を渡し、第二引数に-2を渡して、結果を表示してみましょう。
実行します。

100の位に丸められ、1200.0と表示されました。

bool関数

次に、bool関数について説明します。
Pythonでは、TrueとFalseで表されるデータ型をbool型と呼びます。
bool関数は、引数に渡したオブジェクトがTrueかFalseかを返す関数です。
コードを書いて確認してみましょう。

print(bool(2 > 1))
print(bool(True))
print(bool(1))
print(bool("Hello"))
print(bool([1, 2, 3]))

bool関数の引数に2、>(大なり)、1という正しい条件の式を渡します。
その他にも、bool関数にTrue、数値の1、文字列でHello、1、2、3の要素が入ったリストを渡して結果を表示してみましょう。
実行します。

全てTrueと表示されました。
このように、条件の式が正しい場合や、True、0以外の数値、要素が入っているオブジェクトなどはTrueが返ってきます。

print(bool(1 > 2))
print(bool(False))
print(bool(None))
print(bool(0))
print(bool(""))
print(bool([]))

今度はbool関数の引数に1、>(大なり)、2という誤った条件の式を渡します。
その他にも、bool関数にFalse、None、数値の0、空の文字列、空のリストを渡して結果を表示してみましょう。
実行します。

全てFalseと表示されました。
このように条件の式が間違っている場合や、False、None、0、要素が空のオブジェクトなどはFalseが返ってきます。

len関数

次に、len関数について説明します。
len関数は文字列やリストなど、様々なオブジェクトの要素数を返す関数です。
コードを書いて確認してみましょう。

print(len("Hello"))

len関数の引数に文字列を渡すと、その文字列の文字数を返します。
len関数の引数に文字列のHelloを渡し、結果を表示してみましょう。
実行します。

Helloの文字数は5個なので、5と表示されました。

print(len([1, 2, 3, 4]))
print(len((1, 2, 3, 4, 5)))
print(len({'Python': 1, 'Ruby': 2, 'PHP': 3}))

len関数の引数にリストやタプル、辞書を指定すると、そのオブジェクトの要素数を返します。
引数に要素数が4つのリスト、要素数が5つのタプル、要素数が3つの辞書を渡し、結果を表示してみましょう。
実行します。

4、5、3と表示されました。

sum関数

次に、sum関数について説明します。
sum関数は、引数に渡したリストやタプルなどの要素の合計値を返す関数です。
コードを書いて確認してみましょう。

x = [1, 2, 3, 4]
print(sum(x))

変数xに1から4までの数値を要素に持つリストを代入します。
sum関数の引数にxを渡し、結果を表示してみましょう。
実行します。

リストの要素の合計値である10が表示されました。

x = [1, 2, 3, 4]
print(sum(x, 100))

sum関数の第二引数に数値を指定すると、その値と第一引数の合計値が返ってきます。
sum関数の第一引数にxを渡し、第二引数に100を渡して結果を表示してみましょう。
実行します。

10と100が合計され、110と表示されました。

max関数

次に、max関数について説明します。
max関数はリストや辞書、文字列などのオブジェクト内の要素の中で、最大値を求める関数です。
コードを書いて確認してみましょう。

x = [1, 2, 3, 4, 5]
print(max(x))

変数xに1から5までの数値を要素を持つリストを代入します。
max関数の引数にxを渡し、結果を表示してみましょう。
実行します。

リストの中で最大値である5が表示されました。

x = ['Python', 'JavaScript', 'PHP']
print(max(x))

次は変数xにPython、JavaScript、PHPという文字列を要素に持つリストを代入します。
文字列の場合は、小さい順に大文字のAからZ、小文字のaからzと順序づけられています。
max関数の引数にxを渡し、結果を表示してみましょう。
実行します。

Pythonと表示されました。
文字列の場合、一文字目の順序で判断されます。
一文字目が同じ場合、二文字目の順序で判断されます。
今回の場合、一文字目で最も大きいと判断される文字は大文字のPであり、PythonとPHPの2つが該当します。
その場合、二文字目で判断します。
PHPのHよりも、Pythonのyの方が大きいと判断されるので、結果としてPythonが返ってきます。

x = ['Python', 'JavaScript', 'PHP']
print(max(x, key=len))

また、max関数の引数keyに関数などを指定することができます。
リストの各要素に対して指定した関数を呼び出し、その結果の中の最大値を求めます。
max関数の第一引数にxを渡し、引数keyにlen関数を渡して結果を表示してみましょう。
このとき、len関数の後ろに丸括弧は不要です。
実行します。

JavaScriptと表示されました。

リストの各要素がkeyで指定したlen関数で呼び出され、文字数に変換されます。
その結果、リストの要素の中で文字数が最大のJavaScriptが返ってきます。

x = {'a': 3, 'b': 2, 'c': 1}
print(max(x))

今度は変数xに、キーがa、b、c、値が3、2、1である辞書を代入します。
max関数の引数にxを渡し、結果を表示してみましょう。
実行します。

cと表示されました。
このように辞書を引数に渡すと、キーの最大値が返されます。

x = {'a': 3, 'b': 2, 'c': 1}
print(max(x.values()))

辞書の値の最大値を取得したい場合は、values()メソッドを使います。
max関数の引数にx、ドット、values、丸括弧と書き、結果を表示してみましょう。
実行します。

3と表示されました。
今度は値の最大値が返されていることがわかります。

min関数

次に、min関数について説明します。
min関数は先ほどのmax関数と反対で、リストや辞書、文字列などのオブジェクト内の要素の中で、最小値を求める関数です。
コードを書いて確認してみましょう。

x = [1, 2, 3, 4, 5]
print(min(x))

変数xに1から5までの数値を要素を持つリストを代入します。
min関数の引数にxを渡し、結果を表示してみましょう。
実行します。

リストの中で最小値である1が表示されました。

x = ['Python', 'JavaScript', 'PHP']
print(min(x))

次は変数xにPython、JavaScript、PHPという文字列を要素に持つリストを代入します。
文字列の場合は、小さい順に大文字のAからZ、小文字のaからzと順序づけられているのでした。
min関数の引数にxを渡し、結果を表示してみましょう。
実行します。

JavaScriptと表示されました。
文字列の場合、一文字目の順序で判断されます。
PよりもJの方が小さいと判断されるので、結果としてJavaScriptが返ってきます。

x = ['Python', 'JavaScript', 'PHP']
print(min(x, key=len))

またmin関数でも、引数keyに関数などを指定することができます。
リストの各要素に対して指定した関数を呼び出し、その結果の中の最小値を求めます。
min関数の第一引数にxを渡し、引数keyにlen関数を渡して結果を表示してみましょう。
実行します。

PHPと表示されました。
リストの各要素がkeyで指定したlen関数で呼び出され、文字数に変換されます。
その結果、リストの要素の中で文字数が最小のPHPが返ってきます。

range関数

次に、range関数について説明します。
range関数は、連続した整数値を要素に持つオブジェクトを作成する関数です。
コードを書いて確認してみましょう。

print(range(5))
print(type(range(5)))

まず、range関数の引数に5を渡し、print関数で表示してみましょう。
また、type関数を使ってデータ型を確認してみましょう。
実行します。

rangeオブジェクトが作成できました。
この中には0以上5未満の整数が入っています。
また、データ型はrange型となっていることがわかります。

for i in range(5):
    print(i)

for文を使ってrangeオブジェクトの中から要素を一つずつ取り出してみます。
for、i、in、rangeと書き、引数に5を渡し、:(コロン)を書きます。
取り出した要素をprint関数で表示してみましょう。
実行します。

0から4までの整数が表示されました。
なお、range関数の引数には、第一引数から順にstart、stop、stepの3つがあります。
このうち、第一引数のstartと第三引数のstepは省略可能です。
デフォルトではstartには0、stepには1が渡されています。
そのため、このようにrange関数の引数に5を渡したときは、0から5までの、1ずつ増えた整数が表示されます。

for i in range(5, 10):
    print(i)

今度はrange関数の第一引数に5を渡し、第二引数に10を渡し、先ほどと同様にfor文を使って要素を一つずつ取り出してみましょう。
そして、取り出した要素をprint関数で表示してみましょう。
実行します。

5から9までの整数が表示されました。
このように、第一引数以上、第二引数未満の整数が表示されます。

for i in range(5, 10, 2):
    print(i)

今度はrange関数の第一引数に5を渡し、第二引数に10を渡し、第三引数に2を渡し、先ほどと同様にfor文を使って要素を一つずつ取り出してみましょう。
そして、取り出した要素をprint関数で表示してみましょう。
実行します。

5、7、9が表示されました。
このように、第三引数に2を渡すと、2ずつ増えた整数が表示されます。

for i in range(5, 10, 0.5):
    print(i)

なお、range関数の引数は整数のみを指定でき、小数は指定できません。
先ほどのfor文のrange関数の第三引数を0.5に変えてみます。
実行します。

このようにエラーとなります。

zip関数

次に、zip関数について説明します。
zip関数は、複数のリストやタプルに入った要素をまとめたオブジェクトを作成する関数です。
コードを書いて確認してみましょう。

name = ["Python", "Ruby", "PHP"]
number = [10, 100, 1000]

print(zip(name, number))
print(type(zip(name, number)))

まず、変数nameにPython、Ruby、PHPという文字列を要素に持つリストを代入します。
次に、変数numberに1、2、3を要素に持つリストを代入します。
これらをzip関数の引数に渡して、print関数で表示してみましょう。
また、type関数を使ってデータ型を確認してみましょう。
実行します。

zipオブジェクトが作成できました。
また、データ型はzip型となっていることがわかります。

name = ["Python", "Ruby", "PHP"]
number = [10, 100, 1000]

for i in zip(name, number):
    print(i)

for文を使ってzipオブジェクトの中から要素を一つずつ取り出してみます。
for、i、in、zipと書き、引数にnameとnumberを渡し、:(コロン)を書きます。
取り出した要素をprint関数で表示してみましょう。
実行します。

nameとnumberの要素が一つずつタプルにまとめられて表示されました。

name = ["Python", "Ruby", "PHP"]
number = [10, 100, 1000]

for i, j in zip(name, number):
    print(i)
    print(j)

また、zipオブジェクトの中の要素は別々に取り出すこともできます。
先ほどのfor文のカウンタ変数をiとjの二つにします。
取り出した要素をそれぞれprint関数で表示してみましょう。
実行します。

今度はタプルではなく、nameとnumberの要素が別々で表示されました。

name = ["Python", "Ruby", "PHP", "Java"]
number = [10, 100, 1000]

for i, j in zip(name, number):
    print(i)
    print(j)

zip関数に渡すリストなどの要素数が異なる場合、要素数が少ない方に合わせられます。
変数nameのリストにJavaを付け加え、先ほどと同じように結果を表示させてみましょう。
実行します。

先ほどと同じ結果が表示されました。
nameの要素数は4つありますが、numberの要素数が3つしかないため、Javaは表示されません。
なお、今回は2つのリストを使って説明しましたが、3つ以上でも同様の操作ができます。

enumerate関数

最後に、enumerate関数について説明します。
enumerate関数は、リストやタプルの要素とインデックスをまとめたオブジェクトを作成する関数です。
コードを書いて確認してみましょう。

name = ["Python", "Ruby", "PHP"]

print(enumerate(name))
print(type(enumerate(name)))

まず、変数nameにPython、Ruby、PHPという文字列を要素に持つリストを代入します。
enumerate関数の引数にnameを渡して、print関数で表示してみましょう。
また、type関数を使ってデータ型を確認してみましょう。
実行します。

enumerateオブジェクトが作成できました。
また、データ型はenumerate型となっていることがわかります。

name = ["Python", "Ruby", "PHP"]

for i in enumerate(name):
    print(i)

for文を使ってenumerateオブジェクトの中から要素を一つずつ取り出してみます。
for、i、in、enumerateと書き、引数にnameを渡し、:(コロン)を書きます。
取り出した要素をprint関数で表示してみましょう。
実行します。

インデックスとnameの要素が一つずつタプルにまとめられて表示されました。

name = ["Python", "Ruby", "PHP"]

for i, j in enumerate(name):
    print(i)
    print(j)

また、インデックスとnameの要素を別々に取り出すこともできます。
zip関数と同じように、先ほどのfor文のカウンタ変数をiとjの二つにします。
取り出した要素をそれぞれprint関数で表示してみましょう。
実行します。

インデックスとnameの要素が別々で表示されました。