タイトル
組み込み関数
組み込み関数とは
・・・インポートや定義しなくて利用できる関数のことです。つまり、デフォルトで元々Pythonに入っている関数のことです。出力でよく使うprint()も組み込み関数の一つです。
組み込み関数は全部で 69個 ありますが、ここではよく使うもの30個について使い道と使い方を紹介します。
abs
組み込み関数abs(x)は、数値xの絶対値|x|を求める関数です。
引数
xに数値を渡すと、返り値
としてその絶対値が帰ってきます。
abs(-2)
# 実行結果 2
abs(5.8)
# 実行結果 5.8
引数のデータ型がint型(整数)の場合、返り値もint型になります。
同じ様に、引数のデータ型がfloat型(浮動小数点)の場合、返り値もfloat型になります。
余談ですが、似たようなメソッドでnp.abs()があります。
これも絶対値を求めるもので、numpyのメソッドになります。
参考
all
組み込み関数all()は、リストやタプルなどといった配列の全ての中身がTureであるかどうかを判別する関数です。
「Tureである」というのは、要素に「0以外の数字」もしくは「空白以外」が入っている場合です。
配列の要素全てがTrueである場合で、Trueを返し、それ以外はFlaseを返す関数になります。
引数
はリストやタプルなどの配列で、返り値
はTrueもしくはFlaseのブーリアンです。
実際にどういうことか、見てみましょう。
list1 = [56, 567, -45, 78] #判定対象
print('判定結果1:', all(list1))
list2 = [56, 567, 0, 78] #判定対象
print('判定結果2:', all(list2))
tuple1 = ('ピンク色', '', '黄緑色', '水色')
print('判定結果3:', all(tuple1))
# 判定結果1:True
# 判定結果;False ←(原因:0があったため)
# 判定結果: False ←空の要素があったため
All()関数を使用して、Tureと返ってきたら、その配列は0以外の要素が一つ以上含まれいてる ことを意味します。
逆に、Falseが返ってきた場合、0が含まれているもしくは空の要素が入っていることを意味しています。
💡引数(判定対象)
は数字でも、文字列、イテレータブルオブジェクトでも可能です。
any
組み込み関数any()は、リストやタプルなどの配列のいずれかの要素にTrueが含まれ場合、Trueと返し、一つもTureが含まれない場合は、Falseが返されます。
all()関数と使い方は同じです。
list1 = [56, 567, 0, 78] #判定対象
print('判定結果1:', all(list2))
list2 = [0, 0, 0, 0] #判定対象
print('判定結果2:', any(list2))
# 判定結果1:True
# 判定結果2:False ←(原因: list2の中身全てFalseになるため)
返り値がTrueの場合、一つ以上はTrueがあるという事を意味します。
逆にFlaseの場合は、1つもTrueがない(=全てFlase)という事を意味します。
chr
組み込み関数chr()は、Unicode値で整数を与えること、そのUnicodeに対応する文字を返す関数です。
Unicodeとは
文字コードの国際的な業界標準の一つで、世界中の様々な言語の文字を収録して通し番号を割り当て、同じコード体系のもとで使用できるようにしたもの。Unicodeの97は「a」を表し、Unicodeの12354は「あ」を表します。
良く聞く、UTF-8とは別物なので注意しましょう。
(Unicodeは文字の集まりのことで、UTF-8はその文字の表現方法のことです)
よって、
引数x
は整数で、返り値
はUnicodeを反映した文字列になります。
print(chr(65))
print(chr(0x41))#65の16進数は0x41になります
print(chr(2460))
# A
# A
# 2
💡Pythonでは、0xをつけると数値を16進数で記述できます。
この様に、Unicode値から文字を出力することができます。
code = 0x1F600
while code <= 0x1F64F:
ch = chr(code)
print(ch, end='')
code += 1
if code % 0x10 == 0:
print()
逆に文字からUnicode値を出すこともできる**関数ord()**もあります。
参考
enumerate
組み込み関数enumerate()は、指定した配列の値のインデックス番号を取得する関数です。
enumerateは「列挙する。数えていく」という意味です、それをイメージすると記憶に残りやすいです。
書き方は以下の通りです
enumerate(配列, 初期値)
第一引数
=配列などiterable : シーケンス(リスト、タプル、文字列)や辞書、その他イテレータオブジェクト
第二引数
=初期値:インデックスの開始値(デフォルトはstart=0)
返り値
は、enumerateオブジェクトです。
言葉だと難しいのでコードで見ていきましょう。
l = ["a", "b", "c"]
print(list(enumerate(l)))
#[(0, 'a'), (1, 'b'), (2, 'c')]
#enumerateオブジェクトとして出力する時わかりにくいためList化している
実際よく使われるのはFor文の中です。
for i, name in enumerate(l, 1):
print(i, name)
# 1 Alice
# 2 Bob
# 3 Charlie
for i, name in enumerate(l, 42):#スタート位置を変更した
print(i, name)
# 42 Alice
# 43 Bob
# 44 Charlie
eval
組み込み関数eval()は、文字列の 式を渡すと、その実行結果が返ってくる関数です。
使い所としては、
通常は文字列は式として実行されないので、文字列を受け取ってそれをそのまま実行したい時に使います。意外とよく使います。
引数
は文字式で、返り値
はその実行結果です。
どのようなものか実行して見てみましょう。
x = 2
eval('x+5')
eval("'my' + 'string'")
eval("print('Hello')")
#7
#'mystring'
#Hello
さらには、文字列からリスト型や辞書型を作成したりすることもできます。
#リストの文字列からリストを作成
line = "[1,2,3,4,5]"
data = eval(line) #リストが返される
print(data)
#[1,2,3,4,5]
注意点: 式ではなく(=や==など代入や演算子を使用する)文を指定するとSynataxErrorが発生します。(その場合は、exex関数を使用すると解決します)
eval('val = 2 + 3')#Error
eval('z==9')#Error
exec
組み込み関数exec()は、文字列の 文または式を渡すと、その実行結果が返ってくる関数です。
一つ上のeval()関数と使い方と使い所はよく似ています。
eval() は式は実行できませんが、exec()では出来ます。
eval('val = 2 + 3')#Error
exec('val = 2 + 3')#5
float
組み込み関数float()は、数値または文字列型のデータを、浮動小数点数float型に変換する関数です。
引数
は、数値または文字列型のデータで、
返り値
は、float型のデータになります。
次のように使います。
print(float(15))
print(float("5.755"))
print(float())
#15.0
#5.755
#0.0
input
組み込み関数input()は、キーボードからの入力を取得する関数です。
AtCoderやPaizaなど競技プログラミングにおいて、
入力データが与えられる時に多く使用されます。
x = input()
# 実行すると入力画面が出てくるので、abcと入力
print(val)
# abc
print(type(x))
#<class 'str'>
注意 :input()で所得したものは全て、**文字列型(str型)**のデータになることに注意しましょう。
所得した値を、数値のデータとして扱いたい時は、int()関数やfloat関数を使用します。
int
組み込み関数int()は文字列str型やfloat型のデータを、int型(整数)に変換する関数です。
引数
は文字列型のデータを渡し、返り値
で整数型のデータが返ってきます、
mystr = "1234"
print(int(mystr))
myflt = 0.1234
print(int(myflt))
#1234
#0
似たようなものとして**str(),float()**があります。
参考
len
組み込み関数len()は、リストや文字列など、オブジェクトの長さや要素数を所得する関数です。
引数
として、文字列型やリスト、タプル、セット、辞書型のデータなどを受け取ります。
返り値
として、
文字列であればその文字数、
リスト・タプル・セット・辞書型の場合であれば、中身の要素の数が
整数(int)型で返されます。
#リスト型の要素数の所得
l = [0, 1, 2]
print(len(l))
#タプル型の要素数の取得
t = (0, 1, 2,3)
print(len(t))
#文字列型の文字数を取得
s = 'abcde'
print(len(s))
# 3
# 4
# 5
for文を組み合わされて使うことが多いです。
例えば、リスト中身は使用しないが、リスト長さの回数分だけ繰り返したい時には以下のように使います。
X = [0, 2, 4, 6]
for i in range(len(X)):
print(i)
#実行結果
0
1
2
3
list
組み込み関数list()は、受け取ったイテラブル(反復可能オブジェクト)をベースに、リストを作成します。
引数
は、反復可能オブジェクト(文字列や、range関数の戻り値)
返り値
は、リストになります。
x = list('Python')
print(x)
y = list(range(1:10))
print(y)
#[ 'P'、'y'、't'、'h'、'o'、'n']
#[1,2,3,4,5,6,7,8,9]
💡emp=list()といったように、引数を省略すると、空のリストが作成されます。
※emp=[]と同じ
あとからappendメソッドで追加していく時に、よく空のリストが使われます。
map
組み込み関数map()は、配列などのイテラブルの全要素に、同じ処理をすることができる関数です。
For文を使っても同じことができますが、コードが短縮され、シンプルに読みやすくなります。
書き方は次のようになります。
map(関数, イテラブル)
第一引数
=イテラブルオブジェクトに適応させたい処理
第二引数
=イテラブルオブジェクト(リストやタプルなど)
返り値
として、処理されたイテラブルがマップ型で戻ってきます。(printで出力できない)
l = [-2, -1, 0]
print(map(abs, l))
def double(x):#やりたい処理を定義
return x**2
list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
map_list = map(double, list)
print(map_list)
#上を同じことするfor文
for_list=[]
for i in list:
new_list.append(i**2)
print(for_list)
# <map object at 0x10651a400> ←実際は[2,1,0]になっている
#<map object at 0x7f0b055f8f50> ←実際は[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
注意:
map関数の返り値
はリストではなくイテラブルなmapオブジェクト と呼ばれるものです。
ループ処理は可能なのですが、append等のリストのメソッドは使用できません。
また、print関数で出力しても、カンマ区切りの要素では表示されず、オブジェクトの型名が表示されるだけです。
lamda式やinput()関数と一緒に使われることが多いです。
関数を毎回定義するのが面倒な時、lamda式()を使用することで、一行に処理をまとめられます。
def double(x):
return x**2
list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
map_list = map(double, list)
print(map_list)
#上を同じ処理
#lamda式を使用すると関数を定義しなくてもよい
l = [-2, -1, 0]
print(list(map(lambda x: x**2, l)))
競技プログラミングにおいて、input()で受け取ったデータの形を変換させる時にもよく使われます。
a=int(input())
b=int(input())
c=int(input())
#上3行をmap関数を使用することで次のようにまとめられる
a,b,c = map(int, input().split())