pythonで利用する重要な型として論理型、数値型、文字列型があるが、以下にそれぞれの説明をする。
論理型の使い方
pythonの論理型はboolという型で、「True」と「False」の2つの値だけがある。
これは、主に条件文に利用する。
(条件文についてはこちらに詳細を記述)
if文は、下記のように、if (条件) : (プログラム)と記述し、条件がTrueの場合に実行され、Falseの場合実行されないプログラム。
Example
if bool_true:
print("true") # 条件文(if内)は実行される
bool_false = False # bool_falseにFalseを代入
if bool_false:
print("False") # 条件文(if内)は実行されない
bool_true = 2 > 1 # 2 > 1は正しいため、bool_trueにTrueが代入される
if bool_true:
print("true") # 条件文が実行され、「true」と表示される
bool_false = 1 > 2 # 1 > 2は誤っているため、bool_falseにFalseが代入される
if bool_false:
print("False") # 条件文が実行されず、「False」は表示されない
# and andは(式1 and 式2)と記述し、式1と式2の両方が正しいときにTrue,それ例外はFalseを返す
bool_true = (2 > 1) and (3 > 1) # 2 > 1と3 > 1は両方正しいため、bool_trueにはTrueが代入される
if bool_true:
print("True") # 条件文が実行され、「True」と表示される
bool_false = (2 > 1) and (1 > 1) # 2 > 1は正しいが、1 > 1は誤っているため、bool_falseにFalseが代入される
if bool_false:
print("False") # 条件文が実行されず、「False」は表示されない
# or orは(式1 and 式2)と記述し、式1と式2のどちらか一つでも正しいときにはTrue,それ例外はFalseが返される
bool_true = (1 > 1) or (3 > 1) # 1 > 1は誤っているが、3 > 1は両方正しいため、bool_trueにはTrueが代入される
if bool_true:
print("True") # 条件文が実行され、「True」と表示される
bool_false = (0 > 1) or (1 > 1) # 0 > 1も1 > 1は誤っているため、bool_falseにFalseが代入される
if bool_false:
print("False") # 条件文が実行されず、「False」は表示されない
# not notはnot (式1)と記述し、式1が正しいときにはFalse,式1が誤っているときにはTrueを返す
boolTrue = not (0 > 1) # 0 > 1はFalseだが、not が前についているためboolTrueにはTrueが格納される
boolFalse = not (3 > 1) # 3 > 1はTrueだが、not が前についているためboolFalseにはFalseが格納される
数値型の使い方
pythonの数値型には、int(整数型)とfloat(浮動小数点数型)の2つ。
数値計算をするときや数値を利用したい場合に使用する。
int(整数型)、float(浮動小数点数)
Example
age = 25 # 変数ageにint型の数値25が格納される
height = 175.5 # 変数heightにfloat型の浮動小数点数175.5が格納される
print(age + 1) # age(25) + 1で26が表示される
print(height + 1) # height(175.5) + 1で176.5が表示される
# 負の整数
value = -5 # 整数の前に-をつけると負の整数が変数に格納される
print(value + 1) # -4と表示
2進数、8進数、16進数、N進数
Example
age = 0b111 # この場合、右辺は2進数のため、変数ageには7が格納される
age = 0o11 # この場合、右辺は8進数のため、変数ageには9が格納される
age = 0x11 # この場合、右辺は16進数のため、変数ageには17が格納される
2進数の数値を文字列にするには、bin(数値)、8進数の場合はoct(数値)、16進数の場合はhex(数値)を用いる
print(bin(15)) # この場合、2進数として'0b1111'が表示される
print(oct(15)) # この場合、8進数として'0o17'が表示される
print(hex(15)) # この場合、16進数として'0xf'が表示される
# 数値と文字の列をintに変換する場合
print(int('f', 16))# この場合、16進数として15が表示される
print(int('python', 36))# この場合、36進数として1570137287と表示される
complex(複素数型)
Example(複素数の表し方1)
a = 1 + 3j # 実数1と虚数3の複素数
b = 3 + 5j # 実数3と虚数5の複素数
print(a + b) # 複素数4+8jが表示される
print(a * b) # 複素数-12+14jが表示される
Example(複素数の表し方2)
a = complex(1, 3)
b = complex(3, 5)
print(a + b) # 複素数4+8jが表示される
print(a * b) # 複素数-12+14jが表示される
文字列型の使い方
文字列の基本
文字列型は、ダブルクオーテーション("),シングルクオーテーション(')で囲って宣言する。また、"""~"""とすると改行も自由に挿入して宣言できる。
Example
print(str) # appleが表示される
str = 'orange'
print(str) # orangeが表示される
str = """apple
orange
grape
"""
print(str) # 改行を含んで、apple
orange
grapeと表示される
文字列の切り取り
文字列はシーケンスというデータ構造で保存されている。
シーケンスでは、1つ1つ値を順番に処理できる。
例えば、str = "apple"とした場合、str[0]はa, str[1]はpのように、数値で指定することで、アクセスできる。
(逆に、数値はシーケンスでないため、num = 123としてもnum[0]で1にアクセスすることはできない)
他にも、便利な方法なアクセスの方法がある
str[-1]とした場合、strの最後から数えて一番目の値にアクセスする(appleの場合、e)
str[0:2]とした場合、1番目と2番目にアクセスする(appleの場合、ap)
str[0:5:2]とした場合、1番目から4番目まで1つ飛ばしでアクセスする(appleの場合、ape)。
str[:3]とした場合、初めから3番目までの、1,2,3番目の要素を取り出す(appleの場合app)
str[3:]とした場合は、4番目から最後の要素までを取り出す(appleの場合、le)
str[-1::-1]の場合、最後から一つずと戻って逆順に表示される(appleの場合、elppa)
Example
str = "apple"
print(str[0]) # aと表示
print(str[ 1]) # pと表示
print(str[-1]) # eと表示
print(str[0:2]) # apと表示
print(str[0:2]) # apと表示
print(str[0:5:2]) # apeと表示
print(str[:3]) # appと表示
print(str[3:]) # leと表示
print(str[-1::-1]) # elppaと表示される
文字列の連結
文字列は、数字の計算をするように文字列+文字列とすることで連結できる。
また、文字列 * NとしてNに数字を入れると文字列をN回繰り返す文字列になる。
Example
str1 = "apple " # 変数str1に文字列apple が格納される
str2 = "pen" # 変数str2に文字列penが格納される
str3 = str1 + str2 # 変数str3に変数str1とstr2を連結した文字列(apple pen)が格納される
str4 = str1 * 10 # 変数str4に文字列appleが10回繰り返して格納される
print(str3) # apple penと表示
print(str4) # apple × 10回表示
文字列の区切り(join)
文字列の1文字、1文字の間に区切りを入れる方法もある。
例えば、appleの1文字1文字の間に空白を入れて、a p p l eとしたい場合、" ".join("apple")とする。
Example
str = "apple"
print(" ".join(str)) # appleに空白区切りが挿入されてa p p l eとなる
コード変換関数(encode, decode)
文字列をそのまま文字列として持たずに、コード(utf8,shift-JIS等)を指定して、符号化してbyteの配列として持つ場合がある。
また、byteの配列を文字列に戻すことを復号という。
この際に利用する関数がencodeとdecode。
文字列を型で指定して保存するとき、文字化けを防ぐときなどに利用する。
Example
str = "りんご"
str_encode = str.encode("utf8") # りんごをutf8で符号化して、変数str_encodeに格納する
print(str_encode) # りんごをutf8で符号化したbyte文字列のb'\xe3\x82\x8a\xe3\x82\x93\xe3\x81\x94'が表示される
print(str_encode.decode("utf8")) # 符号化された文字列が復号化されりんごと表示される
print(str_encode.decode("cp932")) # 別の文字コードで復号するとエラーになる(cp932はShift-JIS)
文字列検索関数(count)
文字列中に現れるある文字の数を検索して回数を調べる場合、count関数を用いる
Example
str = "apple"
print(str.count("p")) # strの中にpは2回出てくるため、2が表示される
print(str.count("pl")) # strの中にplは1回出てくるため、1が表示される
文字列の関数(startswith, endwith)
文字列がある文字列から始まっているまたは、終わっているのかを確認するための関数としてstartswithとendwithがある
Example
str = "apple"
print(str.startswith("ap")) # str("apple")はapで始まるため、Trueが返される
print(str.startswith("ae")) # strはaeでは始まらないためFalseが返される
print(str.endswith("le")) # strはaeでは終わらないためFalseが返される
print(str.endswith("ae")) # strはaeでは終わらないためFalseが返される
文字列の分解関数(split, rsplit, splitlines)
文字列を分割する関数として、split,rsplit,splitlinesがある。
splitは文字列の左から指定の文字列で分割し、rsplitは文字列の右から指定の文字列で分割し、splitlinesは改行を分割して配列として格納する
Example
str = "apple,orange,grape"
print(str.split(",")) # strが","で分割され、['apple', 'orange', 'grape']が表示される
print(str.split(",", 1)) # strが","で左から1つ分割され、['apple', 'orange,grape']が表示される
print(str.rsplit(",")) # strが","で右から分割され['apple', 'orange', 'grape']が表示される
print(str.rsplit(",", 1)) # strが","で右から1つ分割され['apple,orange', 'grape']が表示される
str = """apple
orange
grape"""
print(str.splitlines()) # strが改行で分割され['apple', 'orange', 'grape']が表示される
#ちなみにsplitを使って改行できる
print(str.split('\n'))
文字列の除去関数(strip, rstrip, lstrip)
strip関数は、文字列の両端から指定した文字を削除する関数。
rstripの場合、文字列の右側から指定した文字を削除する。
lstripの場合、文字列の左側から指定した文字を削除する。
Example
splited_str = str.strip() # strip関数を空白で呼び出すと、両端から空白を削除した文字列を返す
print(splited_str) # "apple grape"と表示される
str = " apple grape "
splited_str = str.lstrip() # lstrip関数を空白で呼び出すと、左端から空白を削除した文字列を返す
print(splited_str) # "apple grape "と表示される
str = " apple grape "
splited_str = str.rstrip() # rstrip関数を空白で呼び出すと、右端から空白を削除した文字列を返す
print(splited_str) # " apple grape"と表示される
str = "abcdefghijklmn"
splited_str = str.strip("abdmn") # 文字列を引数にして呼び出すと、両端から指定した文字列を削除した文字列を返す
print(splited_str) # 左からaとb,右からmとnが削除され、"cdefghijkl"が表示される
str = "abcdefghijklmn"
splited_str = str.lstrip("abdmn") # lstrip関数の場合、左端から指定した文字列を削除した文字列を返す
print(splited_str) # aとbが削除され、"cdefghijklmn"が表示される
str = "abcdefghijklmn"
splited_str = str.rstrip("abdmn") # rstrip関数の場合、右端から指定した文字列を削除した文字列を返す
print(splited_str) # mとnが削除され、"abcdefghijkl"が表示される
文字列の変換関数(upper, lower, swapcase, replace, capitalize, capitalize)
文字列を別の文字列に変換する関数もたくさんある。
それぞれの使いかたを以下に紹介する。
Example
# upperメソッドは文字列を大文字に、lowerメソッドは小文字にする
str = "apple grape two_apples BANANA"
print(str.upper()) # "APPLE GRAPE TWO_APPLES BANANA"が表示される
print(str.lower()) # "apple grape two_apples banana"が表示される
# swapcaseは大文字を小文字に、小文字を大文字にする
print(str.swapcase()) # "APPLE GRAPE TWO_APPLES banana"が表示される
# replaceは第1引数の文字列を第2引数の文字列に変換する
print(str.replace("ap", "XX")) # "XXple grXXe two_XXples BANANA"が表示される
# capitalizeは最初の文字を大文字に、それ以外を小文字にする
print(str.capitalize()) # "Apple grape two_apples banana"が表示される
# titleは単語の最初を大文字にそれ以外を小文字にする
print(str.title()) # "Apple Grape Two_Apples Banana"が表示される
文字列の検索(find, index, rfind, rindex)
findとindexは、指定した文字列が何番目にあるのか、インデックスを返すメソッド。
ただし、文字列が見つからなかった場合、findは-1,indexはValueErrorを返す点が異なる。
Example
str = "apple grape two_apples BANANA"
print(str.find("apple")) # appleを左から検索しインデックス(0)を返す(indexも同様)
print(str.rfind("apple")) # appleを右から検索しインデックス(16)を返す(rindexも同様)
print(str.find("lemon")) # 検索しても見つからないため、-1を返す
print(str.index("lemon")) # 検索しても見つからないため、ValueErrorが発生する
文字列の条件関数(islower, isupper)
islowerは、文字列が全て小文字の場合Trueを返し、それ以外はFalseを返す。
isupperは、文字列が全て大文字の場合Trueを返し、それ以外はFalseを返す。
Example
lower_str = "apple"
print(upper_str.isupper()) # 全て大文字のため、Trueが表示される
print(upper_str.islower()) # Falseが表示される
print(lower_str.isupper()) # Falseが表示される
print(lower_str.islower()) # 全て小文字のため、Trueが表示される
その他
文字列型の持っている、他にもメソッドは以下参照
公式サイト