「Python3エンジニア認定 [基礎試験]」 合格を目指します。
使用教材:
・Pythonチュートリアル第4版 --オライリー・ジャパン--
・徹底攻略Python3エンジニア認定基礎試験 問題集 --impress--
前回の記事:
・Python3エンジニア認定基礎試験 勉強してみた1
・Python3エンジニア認定基礎試験 勉強してみた2
こんにちは!引き続き
徹底攻略Python3エンジニア認定基礎試験 問題集を解きました。
今回は正答率がかなり低いです。一度参考書を流し読みしただけでは限界がありますね。
第5章 関数
10問中5問正解
第6章 その他コレクションの操作
10問中1問正解
見直し
【デフォルト値】
default_message_1 = "Hello"
def message(message_1=default_message_1, message_2=""):
print(f"{message_1} {message_2}")
default_message_1 = "こんにちは"
message_2 = "world"
message(message_2=message_2)
Hello world
【アンパック】
リストおよびタプルは、
*を先頭に付けることで、要素を位置引数に展開して関数に渡せます。
これをアンパックと呼びます。
また、ディクショナリは**を先頭に付けることで、キーワード引数として指定できます。
def concat(*args, sep="/"):
"""引数sepの文字列で区切って引数argsの文字列を連結する"""
return sep.join(args)
words = ["spam", "ham", "eggs"]
option = {"sep":"&"}
# 変数words(リスト)と変数options(ディクショナリ)を
# アンパックしてconcat()関数に渡す
print(concat(*words, **options))
spam&ham&eggs
*が先頭に付いた仮引数には、指定済みの実引数を除く位置引数のタプルが入ります。
**が先頭に付いた仮引数には、指定済みの実引数を除くキーワード引数のディクショナリが入ります。
def function(name, *args, **kwargs):
print(name)
print(args)
print(kwargs)
function("spam", "ham", kwarg1="eggs", kwarg2="spamhameggs")
spam
('ham')
{'kwarg1': 'eggs', 'kwarg2': 'spamhameggs'}
【lambda式】
無名関数と呼ばれる種類の関数です。
通常の関数定義とは異なり、単一の式しか持てないという特徴があります。
「lambda 引数: 式」 という書き方をし、式の結果が返り値になります。
func = lambda a, b: (b + 1, a * 2)
x, y = 1, 2
x, y = func(x, y) # lambda式の引数a, bはそれぞれ1, 2で、返り値は(3, 2)
print(x, y)
3 2
【collections.deque】
collections.dequeは、キューのように扱えるデータ構造です。
一般的なキューでは、要素は末尾に追加され、
取り出すときは必ず先頭(左端)の要素から取り出されますが、
collections.dequeでは、これらの操作をappend(要素)とpopleft()で行います。
# "apple","banana"という要素を持ったdequeを作成
queue = deque(["apple", "banana"])
# キューの末尾に"lemon"を追加
queue.append("lemon")
# キューの左端の要素("apple")を取り出す
queue.popleft()
# キューの末尾に"mango"を追加
queue.append("mango")
# キューの左端の要素("banana")を取り出す
queue.popleft()
# キューの末尾に"peach"を追加
queue.append("peach")
# キューの左端の要素("lemon")を取り出す
queue.popleft()
# キューを表示
print(queue)
deque(['mango', 'peach'])
【タプル】
タプルはリストと同じく複数の値を扱うためのデータ型です。
一般的なタプルの定義は、カンマ区切りの要素を括弧「()」で囲むことです。
sample_tuple = ("spam", "ham", "eggs")
sample_tuple = "spam", "ham", "eggs"
sample_tuple = "spam",
sample_tuple = tuple(["spam", "ham", "eggs"])
またリストとタプルには数値と文字列などの異なるデータ型の要素を格納できます。
sample_list = [1, "2", 3]
sample_tuple = ("1", 2, "3")
【set】
setとは集合を扱うデータ型のことで、要素を重複しないように保持する。
また、2つのset同士で、和集合や差集合といった集合演算を行えます。
setはset()関数によって定義できます。set()関数の引数はリスト、タプルといった反復可能体です。
s1 = set([1, 2, 3, 4, 5])
s2 = set((1, 3, 5))
[ディクショナリ]
複数の値を扱うためのデータ型の1つです。
キーを使って値を参照・更新します。
変数 = {キー: 値1, キー2: 値2, ・・・}
文字列、タプル、数値などの不変体をキーとして指定できる。
リストなどの可変体はキーとして指定できない。
【in演算子】
「値 in ディクショナリ」のように、ディクショナリに対してin演算子を使うことでキーの存在を確認できます。
【内包表記】
ディクショナリを1行だけで作成する方法を、内包表記といいます。
{キーの式: 値の式 for 変数 in 反復可能体}
d = {x: x**3 for x in (1, 3, 6)}
d = {x**2: x**3 for x in (1, 3, 6)}
print(d)
[1: 1, 9: 27, 36: 216]
sample_list = [i for i in range(1, 11)]
print(sample_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]