Pythonの基礎 - 組み込み関数

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2021年11月17日 (水) 07:51時点におけるWiki (トーク | 投稿記録)による版 (→‎type関数)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

Pythonの組み込み関数について記載する。


print関数 (文字列を出力)

基本と書式

print関数の書式は、以下の通りである。

 print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)


最も基本的な使用方法は、引数に文字列を指定して実行することにより、標準出力に対して引数に指定した文字列を出力する。
この時、デフォルトでは、自動的に最後に改行が出力される。

引数に文字列ではない数値等を指定する場合、str関数により文字列に変換されて出力される。

引数には、カンマ区切りで複数の文字列を指定することもできる。
デフォルトでは、空白で区切られて出力される。

 print("Hello")
 print(100)
 print("Blue", "Red", "Green")
 
 # 出力
 Hello
 100
 Blue Red Green


区切り文字の変更

引数にカンマ区切り複数の文字列を指定する場合、デフォルトでは空白で区切られて出力される。
別の区切り文字に変更したり、区切り文字無しで出力する場合は、sep="区切り文字"を指定する。

 print(*objects, sep='区切り文字')


例えば、区切り文字を+にする場合はseq='+'、区切り文字無しの場合はseq=と記述する。

 # デフォルトの区切り文字
 print("Blue", "Red", "Green")
 
 # 区切り文字を"+"に変更
 print("Blue", "Red", "Green", sep="+")
 
 # 区切り文字無し
 print("Blue", "Red", "Green", sep="")
 
 # 出力
 Blue Red Green
 Blue+Red+Green
 BlueRedGreen


改行無し

print関数を実行する時、自動的に改行が行われる。(デフォルトは、最後に自動で改行を出力するように設定されているため)

print関数を実行した時、最後に改行しないようにする場合はend=を指定する。(デフォルトは、end='\n')
endには最後に出力する文字列を指定する。
なお、改行以外の別の文字列を指定することもできる。

 print(*objects, end='')


 # デフォルトの設定
 print("Hello");print("Python")
 
 # 改行しないように設定:
 print("Hello", end="");print("Python")
 
 # 最後に任意の文字列を出力するように設定
 print("Hello", end="[end]\n")
 
 # 出力
 Hello
 Python
 HelloPython
 Hello[end]


ファイルへ出力する

print関数は、デフォルトでは標準出力に対して出力されるが、画面ではなくファイルに対して出力することもできる。

 print(*objects, file=sys.stdout)


出力先であるfile引数は、write(string)メソッドを持つオブジェクトである必要がある。
以下の例では、ファイルに対して出力している。

 myfile = open("output.txt", "w")
 print("Hello", file=myfile)
 print("Bye", file=myfile)
 
 myfile.close()


上記のソースコードを実行する時、output.txtファイルが作成される。
output.txtファイルを開いて、文字列がファイルに保存されていることを確認する。


str関数 (文字列に変換)

str関数は、引数に指定したオブジェクトを文字列に変換して取得する。

引数には、数値、リスト、タプル等のオブジェクトが指定できる。

 class str(object='')


 str(100)
 str([10, 20, 30])
 str(True)


数値を文字列と連結する場合や数値から文字列を取得する場合等に使用する。

 print("My age is " + str(100))
 print("Value = " + str([10, 20, 30]))
 print("Result is " + str(True))
 
 # 出力
 My age is 100
 Value = [10, 20, 30]
 Result is True



int関数とfloat関数 (文字列を数値に変換する)

int関数

int関数は、引数に指定した数値または文字列を整数に変換して取得する。

 class int([x])
 class int(x, base=10)


第1引数は、引数に指定した数値または文字列を整数として取得する。
整数が指定された場合はそのままの値が返されて、浮動小数点数が指定された場合は0に近い値に丸められて整数として取得する。
引数を省略した場合、0が返る。

 a = int(15)
 b = int(3.14)
 c = int()
 print(a)
 print(b)
 print(c)
 
 # 出力
 15
 3
 0


引数に文字列を指定した場合は、文字列を整数に変換して取得する。
文字列として指定できる値は、整数形式の文字列のみである。

基数を省略した場合、第1引数の値を10進数として整数に変換する。
基数を指定すた場合、第1引数の値が第2引数で指定した値を基数として、整数に変換する。
基数として指定できる値は、02〜36である。

また、基数の指定において、値のみの指定、または、 base=<基数>の形式で記述してもよい。

 a = int('28')
 b = int("28", 10)
 c = int("1011", 2)
 d = int("3F", 16)
 e = int("24", base=8)
 print(a)
 print(b)
 print(c)
 print(d)
 print(e)
 print(int(17.58))
 print(int("A4", base=16))
 
 # 出力
 28
 28
 11
 63
 20
 17
 164


float関数

float関数は、引数に指定した数値または文字列を浮動小数点数に変換して取得する。

 class float([x])


整数または浮動小数点数を指定した場合、同じ値の浮動小数点数が返る。
文字列を指定する場合、10進数の値が含まれる文字列を指定すること。
引数を省略した場合は、0.0が返る。

また、指数表記での指定も可能である。

 a = float(15)
 b = float(3.14)
 c = float()
 d = float("5.755")
 e = float("8.5e+5")
 f = float("2.34e-4")
 print(a)
 print(b)
 print(c)
 print(d)
 print(e)
 print(f)
 print(float(19))
 print(float("78.225"))
 print(float("-7.52e-3"))
   
 # 出力
 15.0
 3.14
 0.0
 5.755
 850000.0
 0.000234
 19.0
 78.225
 -0.00752



len関数

len関数は、引数に指定したオブジェクトの長さや要素の数を取得する。

 len(s)


引数には、文字列やバイト列、リスト、タプル、辞書等のオブジェクトが指定できる。

 a = len("Hello")
 b = len(["red", "blue", "green"])               # リスト型
 c = len({"s":150, "m":160, "l":170, "xl":180})  # 辞書型
 print(a)
 print(b)
 print(c)
 print(len("Next week is a trip"))
 print(len(["Yes", "No"]))
 print(len({"Yamada":94, "Suzuki":82, "Nishi":64}))
  
 # 出力
 5
 3
 4
 19
 2
 3



bool関数 (オブジェクトの真偽判定)

bool関数は、引数に指定したオブジェクトの真偽を返す。

引数には、文字列、バイト列、リスト、タプル、辞書等のオブジェクトが指定できる。
戻り値として、ブール値のTrueまたはFalseを返す。

 bool([x])


 a = bool("Hello")
 b = bool("")
 c = bool(1)
 d = bool(0)
 e = bool({"s":150, "m":160, "l":170, "xl":180})
 f = bool({})
 print(a)
 print(b)
 print(c)
 print(d)
 print(e)
 print(f)
 print(bool("Hello"))
 print(bool(["A", "B"]))
 print(bool([]))
 
 # 出力
 True
 False
 True
 False
 True
 False
 True
 True
 False



range関数

range関数は、引数に指定した開始値から終了値までの連続した値を要素として持つrange型のオブジェクトを生成する。

startに指定した値から順にstepに指定した値を順に加算して、stopに指定した値未満までの連続した数値を要素として持つオブジェクトを生成する。
stepを省略した場合は1が指定されたものとみなされ、startを省略した場合は0が指定されたものとみなされる。

range関数は、stopの値は含まれないことに注意すること。

 range(stop)
 range(start, stop[, step])


 range(5)
 range(0, 5)
 range(4,7)
 range(0, 5, 1)
 range(0, 10, 2)
 
 # 出力
 0 1 2 3 4
 0 1 2 3 4
 4 5 6
 0 1 2 3 4
 0 2 4 6 8


stepに負の値を指定することにより、開始値から終了値まで逆順に連続した値を持つオブジェクトを生成することができる。
range型オブジェクトをprint関数の引数に指定しても要素の一覧は表示されないが、
range型オブジェクトからlist型オブジェクトを生成した後、print関数で出力すると要素の一覧を確認することができる。

 r1 = range(10, 0, -1)
 r2 = range(0, -8, -2)
 print(r1)
 print(list(r1))
 print(list(r2))
 
 # 出力
 range(10, 0, -1)
 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
 [0, -2, -4, -6]


インデックスを指定して要素を取得することもできる。
また、スライスを指定する場合、スライスに対応したrange型のオブジェクトを取得できる。

 r = range(0, 10, 2)
 print(r[0])
 print(r[4])
 print(r[2:4])
 
 # 出力
 0
 8
 range(4, 8)


range関数は、連続した値を要素として持つリストやタプルを生成するために使用されたり、
for文で繰り返し処理を実行する時に繰り返し回数を指定するため等に使用されることが多い。

 r = range(10)
 for i in r:
    print("num : " + str(i))
 
 num : 0
 num : 1
 num : 2
 num : 3
 num : 4
 num : 5
 num : 6
 num : 7
 num : 8
 num : 9



type関数

type関数は、引数に指定したオブジェクトのデータ型を表す型オブジェクトを返す。

 type(object)


以下の例では、Pythonで使用される主なデータ型について、type関数でどのような値が取得できるかを確認している。

 t1 = type("Hello")
 t2 = type(123)
 print(t1)
 print(t2)
 
 print(type("str"))
 print(type(100))
 print(type(14.5))
 print(type(7.0 + 5j))
 print(type([1, 2, 3]))
 print(type((1, 2, 3)))
 print(type({1:"A", 2:"B", 3:"C"}))
 print(type(True))
 print(type(None))
 
 # 出力
 <class 'str'>
 <class 'int'>
 <class 'str'>
 <class 'int'>
 <class 'float'>
 <class 'complex'>
 <class 'list'>
 <class 'tuple'>
 <class 'dict'>
 <class 'bool'>
 <class 'NoneType'>


type関数で取得した型オブジェクトは、is演算子を使用することにより、指定したデータ型と同じかどうかを確認することができる。

 print(type("Hello") is str)
 print(type("Hello") is int)
 print(type(123) is int)
 print(type(123.4) is int)
 
 # 出力
 True
 False
 True
 False


複数のデータ型と比較する場合は、in演算子を使用することにより確認することができる。

 print(type("Hello") in (str, int))
 print(type(123) in (str, int))
 print(type(123.4) in (str, int))
 
 # 出力
 True
 True
 False


このように、type関数を使用して、引数に指定したオブジェクトのデータ型を取得、および、指定したデータ型と同じかどうかを判定することができる。

以下の例では、リストに格納された値のデータ型を取得して、整数型または浮動小数点数型の場合は値を出力して合計を計算している。

 mylist = [2, "ab", 3.5, True, 4]
 total = 0
 
 for val in mylist:
    if type(val) in (int, float):
       print("val: " + str(val))
       total += val
 
 print("total: " + str(total))
 
 # 出力
 val: 2
 val: 3.5
 val: 4
 total: 9.5



isinstance関数 (オブジェクトのデータ型の判定)

isinstance関数は、第1引数に指定したオブジェクトが第2引数に指定したデータ型と等しいかどうかを返す。

 isinstance(object, classinfo)


第1引数に指定したオブジェクトが第2引数に指定したデータ型のオブジェクトの場合、または、サブクラスのオブジェクトの場合にTrueを返す。

 print(isinstance(1, int))
 print(isinstance(1, str))
 print(isinstance("abc", str))
 print(isinstance("abc", int))
 
 # 出力
 True
 False
 True
 False


複数のデータ型と比較する場合、第2引数に複数のデータ型を持つタプルを指定する。
複数のデータ型のいずれかと一致する場合、Trueを返す。

 print(isinstance(1, (int, float)))
 print(isinstance(2.5, (int, float)))
 print(isinstance("ab", (int, float)))
 
 # 出力
 True
 True
 False


isinstance関数とtype関数の違いとして、isinstance関数は、第2引数がデータ型のサブクラスのオブジェクトの場合でもTrueとなる。
そのため、サブクラスも含めて同じデータ型かどうか確認する場合は、isinstance関数を使用するとよい。

以下の例では、bool型はint型のサブクラスのため、bool型のオブジェクトであるTrueint型と同じため、Trueとなる。

 print(isinstance(3, int))
 print(isinstance(True, int))
 print(isinstance(True, bool))
 
 # 出力
 True
 True
 True


以下の例では、リストに格納された値のデータ型を判定して、整数型または浮動小数点数型の場合は値を出力して合計を計算している。
Trueも整数型として識別されている。(Trueは、数値の1として扱われる)

 mylist = [2, "ab", 3.5, True, 4]
 total = 0
 
 for val in mylist:
    if isinstance(val, (int, float)):
       print("val: " + str(val))
       total += val
 
 print("total: " + str(total))
 
 # 出力
 val: 2
 val: 3.5
 val: True
 val: 4
 total: 10.5