3. 関数とメソッド

定義した変数やリスト、辞書変数を生成した何かしらの処理を行いたい場合、 自前で処理を書いても良いですが、標準的な操作はPythonがはじめから準備し てくれています。関数メソッド と呼ばれる方法がPythonで準備 されていて、様々な操作を変数やリストに行うことができます。第3回講義の 目的は以下のとおりです。

  • 関数を使うための引数の与え方、戻り値の利用法を理解する。

  • メソッドを使った変数の変更、引数の与え方、戻り値の利用法を理解する。

  • 主な組み込み関数とメソッドの使い方を覚える。

関数

変数を特定の条件で生成したり何かしらの処理(リストの合計や平均値等)を行っ てその結果を利用したい場合、 関数 を使います。関数処理は数学の関数 \(y=f(x)\) に似ています。 \(x\) という 引数 を関数 \(f\) に渡して 返り値 として \(y\) を受け取る処理です。後述 しますが自分で関数を作ることもできます。関数の使い方は以下のとおりです。

return_value = FUNCTION_NAME(arg1, arg2,....)

ここで、FUNCTION_NAMEは関数名です。arg1, arg2,....は引数です。複数の引 数を渡す場合は、 , で区切ります。関数に引数を与えて得られる戻り値 は、変数return_valueに代入されます。プログラミングでよく使われる処理は、 最初から準備(組み込み関数)されています。

関数を利用するためには、引数として渡す 変数の型 と関数からの 返 り値とその型 を理解することが必要です。引数として渡す 変数の型 によって、関数が返す 返り値の型 が変化する場合もあります。また関数 によっては、引数が可変長(引数の個数が決まっていない)だったり型も特定し ていないものものあります。

ここでは、pythonの標準で利用できる関数(組み込み関数)のうち (http://docs.python.jp/3.5/library/functions.html) いくつかあげていま す。繰り返しになりますが、関数のマニュアルを読む時は、それぞれの関数が どのような引数と返り値をもつかに着目します。正確な使い方は、マニュアル を参照してもらうとして、いくつか代表的な関数と機能を表に示します。

関数名

引数

戻り値

type()

変数

変数の型を返す

int()

str型

int型の値を返します。

float()

str型

float型の値を返します。

str()

変数

str型の値を返します。

sum()

リスト

リストの総和を返します。

print()

可変長引数 型も決まってない

標準出力へ文字列の書き出し

min()

リスト

引数の中で最小要素を返す

max()

リスト

引数の中で最大の要素返す

sorted()

リスト

要素を並べ替えたリストを返す

reversed()

リスト

要素を逆順にしたリストを返す

len()

リスト

リストの要素数を返す

range()

整数

連続した整数のオブジェクト(リスト)を返す。

enumerate()

リスト(厳密には違います)

リストのindexと要素のペアとなったリストを返します。

zip()

複数のリスト(厳密には違います)

各要素がペアになったリストを返します。

help()

オブジェクト

関数やメソッドのヘルプ。

注釈

厳密には、range()やenumerate()の戻り値はオブジェクトになります。 objectやclassの概念は後述しますが、list()関数を使ってリスト変数に変換 すればリスト変数になるのでリストとしています。

type()

変数の型を返します。

example-01
print(type("hoge"))   # <class 'str'>
print(type(3))        # <class 'int'>
print(type(3.2))      # <class 'float'>
print(type([2, 3]))   # <class 'list'>

int(), float(), str()

変数の型を変換します。繰り返しますが、変数の型の理解は、プログラミング で重要です。以下の例のように文字型で定義した"10"をint()やfloat()を使っ て整数や浮動小数点型に変換できます。

example-02
s = "10"               # 文字型の10を定義
n = 10                 # intの10を定義
print(float(s) + 4)    # 文字型でないので演算ができる。10.0 + 4 = 14.0
print(str(n) * 3)      # 文字型の掛け算 "101010"

sum()

リストの合計を求める関数です。リストの要素はintかfloatでなければなりません。

a = [1, 2, 3, 4, 5]    # リストaを定義、aの要素はすべて整数型
b = sum(a)             # リストaの合計を求める関数 sum()を使って返り値をbに代入
print(b)               # bは1+2+3+4+5=15が代入されている

要素に文字型が入っていると次のように当然エラーになります。

example-03
  a = ["a", 2, 3, 4, 5]   # リストaを定義、aの要素に文字型が混ざっている
  b = sum(a)              # ここでエラー
Traceback (most recent call last):
File "02-example03.py", line 2, in <module>
b = sum(a)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

整数型(int)と文字型(str)は足し算できないとエラーになっています。関数を使うときは、引数としてどのような型を何個渡す必要があるか気をはらう必要があります。

print()

変数をPythonシェルに表示するprint()文も1つの関数です。渡す引数の数は可変で型の制限もありません。

example-04
 a = 3                        # aは整数型
 b = 3.2                      # bは実数型
 c = "I am a hoge"            # cは文字型
 print("hoge", a, b, c)       # 複数の引数でもOK。引数はaとbとc (引数区切りは「,」を使う)

min(), max()

引数として与えたリストの中で最小や最大の要素を戻り値として返します。

example-05
l = [1.2, 3, -4, -5, 7]                  # リストの定義
s = ["za", "hoge", "huga", "ac", "ab"]   # リストの定義
m = max(l)                               # lの要素で最大値(7)を返す関数maxを使う
print(m)                                 # print()関数を使ってmの表示
print(m, max(l))                         # 関数を入れ子にしてprint()に渡しても良い。
print(min(s), max(s))                    # 文字列要素のリストを渡してもよい。辞書順で並べてくれる。abとzaが出力

sorted()

引数として与えたリストの要素を小さい順番に並べ替えたリストを返します。

example-06
l = [1.2, 3, -4, -5, 7]          # リストの定義
m = sorted(l)                    # リストの要素をsort [-5, -4, 1.2, 3, 7]
print(m)
s = ["z", "hoge", "huga", "a"]   # リストの定義
m = sorted(s)                    # 辞書順に並べかえます ['a', 'hoge', 'huga', 'z']
print(m)

注釈

英数(1バイト)以外の文字列をsortした場合、英数字以外の文字(2バイト以 上)は、文字コードに登録されている順番でmin()やmax()、sorted()の戻り値 が決まります。漢字については、あまり規則的に登録されていないようなの で漢字を含む文字のsortを使うことはないでしょう。

reversed()

引数として与えたリストの要素を逆順にしたリストを返します。

example-07
l = [1.2, 3, -4, -5, 7]          # リストの定義
print(list(reversed(l)))         # 要素を逆順にした結果を表示 [7, -5, -4, 3, 1.2]

len()

リストの要素数を戻り値として返します。

example-08
l = [1.2, 3, -4, -5, 7]          # リストの定義
s = ["z", "hoge", "huga", "a"]   # リストの定義
print(len(l))                    # lの要素数5を返す。
print(len(s))                    # sの要素数を返す。
print(len(s[0:3]))               # スライスしたリスト ["z", "hoge", "huga"]の要素数3を返す。

range()

引数として整数を渡すと連続した整数のオブジェクトを返します。list()関数を使うことで連続した整数のリストに変換することができます。またスタートの数字と連続する整数のステップ数をを引数で渡すこともできます。

example-09
s = range(4)                    # 0, 1, 2, 3のオブジェクトを生成
s = list(range(4))              # sをリスト変数に変換
print(s)                        # start=0 end=3 step=1 [0, 1, 2, 3]
print(list(range(1, 3)))        # start=1 end=3 step=1 [1, 2]
print(list(range(2, 10, 2)))    # start=1 end=3 step=2 [2, 4, 6, 8]

注釈

オブジェクトは、変数の型と型への処理をまとめて抽象化した考え方です。 後述するclassで説明しますが、range()の戻り値はlistでないことだけ理解 しておいてください。

enumerate()

要素番号と要素がペアとなったオブジェクトを返します。要素番号を0以外でスタートさせたい場合は、引数で与えます。

example-10
s = [9, 3, "hoge", 4, "千葉"]   # リストの定義
l = enumerate(s)                # enumerateオブジェクトの生成
l = list(l)                     # リストに変換
print(l)                        # start=0 [(0, 9), (1, 3), (2, 'hoge'), (3, 4), (4, '千葉')]
print(list(enumerate(s, 1)))    # start=1 [(1, 9), (2, 3), (3, 'hoge'), (4, 4), (5, '千葉')]

メソッド

変数に何かしらの処理(リストに要素や文字の検索等)を行いたい場合、「メソッ ド」を使います。関数との違いは、変数そのものを変更することです(しない 場合もあります)。関数と同じように引数を渡して戻り値を取得して利用しま す。

メソッドの使い型は以下のように変数に「.」をつなげて使います。

variable.METHOD_NAME(args1, args2...)

メソッドは()で引数をとります。引数は無しの場合や、1つや2つ以上の場合も あります。sortのように引数をとらないメソッドもあります。メソッドを使っ て変数そのものを変更する場合と返り値を利用する場合があります。

関数と同様、メソッドを適用する変数の型と引数の数や型を意識する必要があ ります。

リスト変数用のメソッド

リストに適用できるメソッドは以下のとおりです(http://docs.python.jp/3/tutorial/datastructures.html から抜粋)。

メソッド名

引数

戻り値

機能

append

変数

None

listの最後に要素を追加する。

sort

なし

None

listの要素をsortする(listそのものを変更)。

insert

index, 変数

None

listのindexの位置に要素を追加する。

index

変数

要素番号

listの中で要素のindxeを返す。

count

変数

カウント数

list中に要素が出現する回数を数えます。

append()

リストの最後に新しく要素を追加するappendメソッドは次のとおりです。リストは更新されます。

example-11
a = [3, 4, 5]    # リストaを定義
b = a.append(4)  # 変数aに引数4のappendメソッドを適用, bは返り値
print(a)         # リストaは[3, 4, 5, 4]に変更されている
print(b)         # 返り値はNone
a = a + [4]      # リスト演算を使ってappendメソッドと同じ演算を行う。
print(a)         # [3, 4, 5, 4]

appendを適用する変数はリストである必要があります。 ここで 変数aはリストでない場合はエラー になります。

example-12
a = 3         # 変数aは整数型
a.append(4)   # リストではないaにappendメソッドを適用

このプログラムは次のようなエラーになります。

Traceback (most recent call last):
File "./hoge.py", line 3, in <module>
a.append(4)
AttributeError: 'int' object has no attribute 'append'

aは整数型なのでappendメソッドを適用できない(帰属がない)と怒られていま す。

sort()

リストの中身をsortします。sorted()関数と異なりsortした結果は、リストの中身は更新されます(元のリストは破壊される)。

example-13
hoge = [3, 8, 3.2]                  # listの定義
hoge.sort()                         # 文字列3.2を探す
print(hoge)                         # hogeは[3, 3.2, 8]に更新されている

insert()

リストの任意の位置に要素を追加します。引数で追加する要素と要素番号を与えます。リストは更新されます。

example-14
l = [9, 3, 4]        # リストの定義
l.insert(0, "hoge")  # 要素番号0に"hoge"を追加 ["hoge", 9, 3, 4]
print(l)
l.insert(2, "hoge")  # 要素番号2に"hoge"を追加 ['hoge', 9, 'hoge', 3, 4]
print(l)

index()

リストの中から引数として与えた変数と同じ要素を要素番号が戻り値になります。リストは変化しません。

example-15
hoge = [3.2, "hoge", "3.2", 3.2]    # listの定義
idx = hoge.index("3.2")             # 文字列3.2を探す
print(idx)                          # 2を返す
print(hoge.index(3.2))              # 最初のindexの0を返す
print(hoge)                         # hogeは変わらない [3.2, 'hoge', '3.2', 3.2]

count()

引数に数えたい変数を渡して返り値として出現回数を取得します。

example-16
a = ["hoge", "chiba", "hoge", "tokyo", "oita", "france"]  # リストを定義
n = a.count("hoge")  # aの要素で"hoge"がでてくる回数をcountメソッドの返り値で取得
print(n)             # 2

文字列変数用のメソッド

文字型(文字列変数)に適用できる主なメソッドは以下のとおりです。 http://docs.python.jp/3.5/library/stdtypes.html?highlight=split#string-methods から抜粋しています。文字型に対するメソッドはたくさんあるので代表的なも のだけ紹介します。

メソッド名

引数

メソッドの説明

str.split()

分割する文字x

xでstrを分割したリストを返す

str.find()

検索する文字x

str中にxがあるか検索し、存在すればindexを返す。なければ-1を返す

str.strip()

先頭と末尾の削除するx

strの先頭とおよび末尾部分を除去した文字列を返します。xは除去される文字列です。 xを指定しなければ空白文字が除去される

str.join()

文字要素のリスト

strの文字で連結した文字列を返す

str.format()

可変

strのformatに従って引数の整形した文字列を返す

split()

splitは、引数で与えた文字列で分割します。分割した文字列はリストとして返します。引数を与えない場合、" "(スペース)で分割します。

example-17
s = "3.24 4.23"                        # 文字列変数の定義
s_split = s.split()                    # ["3.24",  "4.23"]を返す
print(s_split)                         # リスト変数s_splitの表示
s_split = s.split(".")                 # ['3', '24 4', '23']を返す
print(s_split)                         # リスト変数s_splitの表示

find()

引数として与えた文字列の要素番号を取得します。複数の文字列が含まれる場合、 最初に現れる文字列のindexを返します。文字列が含まれない場合-1を返しま す。

example-18
s = "私は千葉大生です。千葉大好き"   # 文字列変数の定義
print(s.find("は"))                  # 最初にaが出現するindexとして1が返る
print(idx)                           # リスト変数s_splitの表示
print(s.find("千葉"))                # "千葉"が最初に出現するindex2が返る。
print(s.find("hoge"))                # "hoge"は出現しないので-1が返る。

strip()

文字列の先頭と末尾にあるスペースを削除します。

example-19
s = " chiba   "               # 文字列変数の定義
s_ = s.strip()                # 先頭と末尾のスペースを削除した"chiba"を返す
print(s_)                     # "chiba"の表示

join()

引数として文字列要素からならリストを与え、文字列で結合した文字列を返します。 先頭と末尾にあるスペースを削除します。

example-20
l = ["uma", "ushi", "neko", "inu"]  # リストの定義
s = "="                             # 結合する文字列
print(s.join(l))                    # =でリストの要素を結合した文字列の表示

format()

文字列フォーマット(書式)に従って、変数を整形して文字を返す。文字列の書式指定子フォーマットは、文字を代入するところに {} を指定し ます。 {} の分だけ引数を渡す必要があります。

example-21
s = "私は、{}大の{}年です。"                         # 文字列フォーマット用の文字列
s_ = s.format("千葉", 2)                             # formatメソッドで"千葉"と2を{}に入れた文字列を生成
print(s_)                                            # "私は、千葉大の2年です。"を表示する。
print("私は、{}大の{}年です。".format("千葉", 2))    # 1文で書いてもOKです。

細かい表示の制御は、{}の中で:に続いて書式指定子を使って行います。生成する文字列のフィールド の幅やfloat型を表示する桁数の制御を行うことができます。

書式指定子

意味

e

指数表記にする。指数は e を使って表示します。

f

固定した小数点の桁数で表示します。

d

整数で表示します。

s

文字列で表示します。

いくつか代表的な例を挙げながら書式指定子の使い方を紹介します。完全な書 式指定子の説明についてはURLを参照してください。 https://docs.python.jp/3.5/library/string.html#formatstrings

example-22
# print文とformat分を1行にしています。
print("{:4d}は数字です".format(4))       # 4文字分のフィールドに整数を表示する(:4d)。
print("{:04d}は数字です".format(4))      # 0詰めした4文字分のフィールドに整数を表示する(:4d)。
print("{:6.2f}は数字です".format(4))     # 6文字分のフィールドに少数2桁の浮動少数を表示する(:6.2f)。
print("{:.2e}は数字です".format(4))      # 指数表示で少数2桁で表示する(:.2e)

以上のコマンドを実行すると以下のような結果が得られます。

   4は数字です
0004は数字です
 4.00は数字です
4.00e+00は数字です

{}の中で:の後に確保する文字幅と位置(左詰め、中央、右詰め)を指定する指定子を使うこともできます。

example-23
# print文とformat分を1行にしています。
print("{:<8d}は数字です".format(4))       # 8文字分のフィールドに整数を左詰め
print("{:>8d}は数字です".format(4))       # 8文字分のフィールドに整数を右詰め
print("{:^8d}は数字です".format(4))       # 8文字分のフィールドに整数をセンタリング
4       は数字です
       4は数字です
   4    は数字です

引数に数字を入れることで、format()に渡す引数と{}の対応付けを行うことができます。

example-24
print("{0:4d} {2:4d} {1:4d}".format(1, 3, 2))    # 引数の順を指定しています。

それぞれ4文字フィールドを確保し、1 2 3の順番に表示されます。

1    2    3

辞書型変数用のメソッド

辞書型変数に適用できる主なメソッドは以下のとおりです。 https://docs.python.jp/3.5/library/stdtypes.html#dict から抜粋しています。

メソッド名

引数

戻り値

機能

keys

なし

オブジェクト(リスト)

keyのリストを取得する。

values

なし

オブジェクト(リスト)

要素のリストを取得する。

items

なし

オブジェクト(リスト)

keyと要素がペアのオブジェクト(リスト)を取得する。

update

辞書変数

None

引数として与えた辞書を追加する。

pop

key

None

辞書からkeyのデータを削除する。

keys()

辞書からkeyのオブジェクト(dict_keysオブジェクト)を戻り値として取得しま す。dict_keysオブジェクトは、後述するforやin演算子が利用できるシーケン ス型です。dict_keysオブジェクトは、list()関数をつかってリストに変換で きます。

example-25
dic = {1: 3, "chiba": "chiba", "hoge": 3}    # 辞書の定義
l = dic.keys()                               # dict_keysの生成
l = list(l)                                  # dict_keysからリストを生成
print(l)                                     # [1, "chiba", "hoge"]

values()

辞書からvalueのオブジェクト(dict_valuesオブジェクト)を戻り値として取得 します。dict_valuesオブジェクトは、後述するforやin演算子が利用できるシー ケンス型です。dict_keysオブジェクトは、list()関数をつかってリストに変 換できます。

example-26
dic = {1: 3, "chiba": "chiba", "hoge": 3}    # 辞書の定義
l = dic.values()                             # dist_valuesの生成
l = list(l)                                  # リストを生成
print(l)                                     # [3, "chiba", 3]

items()

辞書からkeyと要素のペアのオブジェクトを戻り値として取得します。

example-27
dic = {1: 3, "chiba": "chiba", "hoge": 3}     # 辞書の定義
l = dic.items()                               # 要素のリストを生成
l = list(l)                                   # オブジェクトをlistに変換
print(l)                                      # [(1, 3), ('chiba', 'chiba'), ('hoge', 3)]

update()

引数として与えた辞書データを追加します。

example-28
dic = {1: 3, "chiba": "chiba", "日本": "Japan"}     # 辞書の定義
dic.update({"tokyo": "東京"})                       # 辞書のデータを追加してupdate
print(dic)                                          # {1: 3, 'chiba': 'chiba', '日本': 'Japan', 'tokyo': '東京'}

pop()

引数としてkeyを与えて辞書からkeyのデータを削除します。keyが存在しない場合はエラーになり、戻り値は削除したkeyの要素になります。

example-29
dic = {1: 3, "chiba": "chiba", "日本": "Japan"}     # 辞書の定義
v = dic.pop("chiba")                                # key="chiba"のデータ(要素="chiba")を削除。
print(dic)                                          # {1: 3, '日本': 'Japan'}

クイズ

Q1

以下のリスト変数の要素数を取得する。

l = ["a", "馬", "牛", "犬", "猫"]

答え

l = ["a", "馬", "牛", "犬", "猫"]
print(len(l))

Q2

range()とリストの演算を使って以下のリストを作成する。

[0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12]

答え

s = list(range(4))
t = list(range(5, 9))
u = list(range(10, 13))
print(s + t + u)

Q3

次のリストxから最大値と最小値を求めて表示する。またソートした結果も表示する。

x = [2.5, 3, 2.0, -3.0, 100.2, -4.5]

答え

x = [2.5, 3, 2.0, -3.0, 100.2, -4.5]
print(max(x))
print(min(x))
print(sorted(x))

Q4

以下のリストに浮動小数2.8を追加して、要素の合計と平均値を求める。

GPA = [3.0, 2.4, 1.3, 2.2, 3.2]

答え

GPA = [3.0, 2.4, 1.3, 2.2, 3.2]
GPA.append(2.8)
print("{:f}, {:f}".format(sum(GPA), (sum(GPA)/len(GPA))))

Q5

以下のリストから"猫"の要素番号を取得する。また"馬"の出現回数をカウントする。

l = ["カビバラ", "馬", "牛", "犬", "猫", "馬", "カピバラ", "象"]

答え

l = ["カビバラ", "馬", "牛", "犬", "猫", "馬", "カピバラ", "象"]
print(l.index("猫"))
print(l.count("馬"))

Q6

format()メソッドを使って以下の変数a, b, cから、以下のような書式になる ようprint()を使って表示する。

a = "千葉"
b = 10
c = 2.5
私は10月で千葉大の2.50年生になります。

答え

a = "千葉"
b = 10
c = 2.5
s = "私は{}月で{}大の{:.2f}年生になります。"
print(s.format(b, a, c))

Q7

以下の文字列から、リスト["山崎", "大窪", "浜辺", "岡ぎり"]を生成する。

data = "山崎, 大窪, 浜辺, 岡ぎり"

答え

data = "山崎, 大窪, 浜辺, 岡ぎり"
data = data.split(", ")
print(data)

Q8

以下のリストから、文字列"a-b-c-d-e-f-g"を生成する。

["a", "b", "c", "d", "e", "f", "g"]

答え

l = ["a", "b", "c", "d", "e", "f", "g"]
s = "-".join(l)
print(s)

Q9

以下の文字列から"hoge"を生成する。

"  hoge  "

答え

s = "  hoge  "
s = s.strip()
print(s)

Q10

以下の文字変数sから「このような…」の段落だけ表示させる。 ヒント: 改行コードでsplit()する。なお抜き出した段落は改行コードを含みます。この改行コードを削除した文字列を作成できていたら加点します。

s = """
20世紀に急速に発達した科学技術は人類に多くの恩恵を与え、人類の福
祉を増進させてきましたが、21世紀は環境を保全しつつ地球環境を有効
に活用して人類の真の福祉に貢献することが求められています。

そのために、環境に調和する化学プロセスを開発し、環境に適合した新
物質を 創製することが大切で、またこれらをすすめるには生物から学
ぶことも重要です。 生物は、何世代もの間に蓄積した情報に基づいて
種々の外部刺激(情報)をキャッチし、応答します。

これらの機能を生体から抽出し、化学的に実用化して、これらの代替あ
るいは超越する物質やプロセスを開発することは、人類が環境に調和し、
他の生物と共生していくため化学の重要な方向です。

このような観点に立脚して、本コースは新しい化学および化学プロセス
の開発を担う人材の育成を目的にしています。
"""

答え

文章が数行になったり、最後の空行があっても対応できるよう汎用性をもたせ るとより良いです。

s = """
20世紀に急速に発達した科学技術は人類に多くの恩恵を与え、人類の福
祉を増進させてきましたが、21世紀は環境を保全しつつ地球環境を有効
に活用して人類の真の福祉に貢献することが求められています。

そのために、環境に調和する化学プロセスを開発し、環境に適合した新
物質を 創製することが大切で、またこれらをすすめるには生物から学
ぶことも重要です。 生物は、何世代もの間に蓄積した情報に基づいて
種々の外部刺激(情報)をキャッチし、応答します。

これらの機能を生体から抽出し、化学的に実用化して、これらの代替あ
るいは超越する物質やプロセスを開発することは、人類が環境に調和し、
他の生物と共生していくため化学の重要な方向です。

このような観点に立脚して、本コースは新しい化学および化学プロセス
の開発を担う人材の育成を目的にしています。
"""

par = s.strip().split("\n\n")[-1]
sentence = "".join(par.split("\n"))
print(sentence)

Q11

以下の変数からformat()を使って下の文章を出力する。 ヒント: 0詰した幅4で指定して出力すればよい。

a, b, c = "2", "共生", 3.0
出力する文章
私は共生の02年です。来年3.00年になりたい。

答え

a, b, c = "2", "共生", 3.0
s = "私は{}{:02d}年です。来年{:4.2f}年になりたい。"

print(s.format(b, int(a), c))

Q12

以下の辞書変数から、辞書変数{"馬": "哺乳類"}を生成する。

dic = {"馬": "哺乳類", "犬": "哺乳類", "蛙": "両生類", "トカゲ": "爬虫類"}

答え

dic = {"馬": "哺乳類", "犬": "哺乳類", "蛙": "両生類", "トカゲ": "爬虫類"}
dic.pop("犬")
dic.pop("蛙")
dic.pop("トカゲ")
print(dic)

Q13

以下の辞書変数から、keyと要素のリストをそれぞれ取得する。

dic = {"馬": "哺乳類", "犬": "哺乳類", "蛙": "両生類", "トカゲ": "爬虫類"}

答え

dic = {"馬": "哺乳類", "犬": "哺乳類", "蛙": "両生類", "トカゲ": "爬虫類"}
k = list(dic.keys())
v = list(dic.values())
print("keys = ", k)
print("values = ", v)