0
0

Python3エンジニア認定基礎試験 勉強してみた3

Last updated at Posted at 2024-01-24

「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()で行います。

例:collections.dequeによるキュー処理
# "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"
要素が1つのタプルを定義する
sample_tuple = "spam",
tuple()関数でタプルを定義する
sample_tuple = tuple(["spam", "ham", "eggs"])

またリストとタプルには数値と文字列などの異なるデータ型の要素を格納できます。

リストに数値と文字列を格納する
sample_list = [1, "2", 3]
タプルに数値と文字列を格納する
sample_tuple = ("1", 2, "3")

【set】
setとは集合を扱うデータ型のことで、要素を重複しないように保持する。
また、2つのset同士で、和集合や差集合といった集合演算を行えます。
setはset()関数によって定義できます。set()関数の引数はリスト、タプルといった反復可能体です。

setをリストで定義する
s1 = set([1, 2, 3, 4, 5])
setをタプルで定義する
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]

次の記事
Python3エンジニア認定基礎試験 勉強してみた4

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0