この記事では以下の内容について勉強します
Python言語チュートリアル 第5章 データ構造
Python言語チュートリアル 第5章 データ構造
経緯
プログラミング学習サイトProgateにてPythonの講座を一通り終了したが、もう少し基礎的な内容を勉強したい。かつ基礎的な知識を有していることを公的に示せるようになった方が学習のモチベーションも上がると考え、近々「Python3エンジニア認定基礎試験」を受験することにした。本記事では当該試験の対策として、関連図書で学習した内容を自分の言葉であうとぷっとしていく。
試験問題の出題範囲を確認する
試験の問題は、天下のオライリージャパン様の書籍「Pythonチュートリアル 第3版」から出題され、各章からの出題率も公表されている。
とはいえ同書籍と同等の内容がWEBで公開されているため、貧乏人の私はそちらを参考にすることにした。
加えて以下のサイトで無料で模擬試験を受験することができるため、実際に出題されるであろう問題に近い内容を確認しながら、リファレンスの参照、自端末で実際にプログラムを動かしてPythonの基礎をいんぷっとしていく。
今回は第5章のデータ構造について学習する。
第5章 データ構造
1問目
次の中からmutableなものをまとめたものとして適切なものを選びなさい・リスト
・該当なし
・タプルとリスト
・タプル
mutable(変更可能)なシーケンスの型を選ぶ問題。※ミュータブルって読むらしいよ!
シーケンス型ってなんだよ!シーケンス型とは、リストや文字列のような順番のある要素の集まりのことを指すらしい。つまりシーケンスの型にはmutable(変更可能)とimmutable(変更不可能)なものがあるから、その区分と該当する型を押さえる必要があるとな。リファレンスを参照すると以下の様に区分できる。
mutable(変更可能)
・リスト型
・バイト配列
immutable(変更不可能)
・文字列型 (string)
・タプル型 (tuple)
・bytes
答えはリスト。
信じられないので本当に文字列型は変更できないのか確認してみる。
x = 'SEKIRO'
#変数xにSEKIROの文字列を格納する
print(x[0])
#変数xの先頭文字「S」が表示される
x[0] = 'P'
#変数xの先頭文字をPに変更してみる
print(x[0])
#もう一度変数xの先頭文字を表示しようとするとTypeError が表示される…
マジやった…
2問目
とりあえず1個ずつやってみる。リストから、引数の値(x)の最初のアイテムを削除するメソッドを選びなさい。
・list.clear(x)
・list.delete(x)
・list.remove(x)
・list.move(x)
list = [3,6,9,12,15,18,21,24,3]
list.clear()
print(list)
#⇒[]
clearは全部消える。clearの中に引数を入力してもエラーになるから違う。list = [3,6,9,12,15,18,21,24,3]
del list[3]
print(list)
#⇒[3,6,9,15,18,21,24,3]
delは引数として入力した数字の要素番号に値する数字だけが消えた。(※pythonの要素は0からカウントする)題意とは異なるためこれも違う。list = [3,6,9,12,15,18,21,24,3]
list.remove(3)
print(list)
#⇒[6,9,15,18,21,24,3]
題意通り引数として入力した3、かつ最初にヒットした3だけが消えた。答えはremove。 3問目
以下のプログラムを実行した際の出力結果を選びなさい。
num_list = [2, 4, 6, 4, 4, 2, 6]
for i in range(num_list.count(4)):
print(i, end=' ')・4 4 4
・1 2 3
・0 1 2
・0 1 2 3
.count(x)は、リスト内に存在するxの個数を返す。この場合は.count(4)なので、リスト内の「4」の個数、つまり3を返す。range(3)は0から3までの範囲を返すため、この場合は(0,3)、つまり0,1,2を返す。答えは0,1,2。
コメント
難易度は試験名でも銘打っているとおり基礎的なものなので、そこまで難しい内容じゃない。LPICレベル1の101試験の問題数を減らした感じ。捻った問題もなく、コンソールで基本的な操作ができるか、また、Python特有のオプションや関数の様式が頭に入っているかが問われる。
今日の一言
梅雨入り前にうざったい前髪にストレートをかけた。これで夏までは大丈夫だろう。毛根は頑張ってくれ。あと加藤純一氏ともこう氏のSEKIROのプレイ動画を見始めたけど、10時間ぐらい経っても全然終わる気配がない。最近はこういう難易度が狂ってる死にゲーが少ないから新鮮に感じる…