Python3 エンジニア認定基礎試験の演習問題を解いてみましょう。
今回はリストの操作について扱います。
この記事はシリーズ記事です。全シリーズはこちらからご覧になれます。
(Python の基礎、操作方法等の記事⼀覧は こちら)
第1問 リストへの要素の追加
下記のコードを実行した結果、出力は「[10, 20, 30]」であった。空欄①に入る記述として正しいものはどれか。
num = [10, 20]
➀
print(num)
① : num = num+(30)
② : num += 30
③ : num.add(30)
④ : num.append(30)
◆正解◆
④ : num.append(30)
リストへの要素の追加はappendメソッドを用いて行います。
※num += 30 はTypeErrorとなりますが、num += [30]とすることで同様にリスト末尾に値を追加することが出来ます。
第2問 リストの仕組み
次のリストに関する説明のうち、間違っているものはどれか。
① : [[1,2,3],[4,5,6]]のように、リストの要素として別のリストを入れる事を「ネスト」と呼ぶ。
② : [[1,2,3,4,5,6]] のリストの要素数は6である。
③ : [[1,2],[3,4,5,6]]のように、異なる長さのリストを要素に出来る。
④ : [[1,2,3],[4,5,6]]のように、リストの要素として別のリストを入れる事を「入れ子」と呼ぶ。
◆正解◆
② : [[1,2,3,4,5,6]] のリストの要素数は6である。
上記のリストの要素数は1となります。鍵括弧が2重になっているので、リストに対して別のリスト([1,2,3,4,5,6])が入っている、リストの入れ子(ネスト)になっています。リストの0番目の要素である[1,2,3,4,5,6]の要素数は6ですが、リスト全体の要素数は1です。
第3問 リストをキューとして使用
下記のコードを実行した結果として、出力される正しいものはどれか。
nums=[0]
nums.append(1)
nums.append(2)
nums.pop()
nums.append(3)
nums.pop(0)
print(nums)
① : [1, 2, 3, 0]
② : [0, 1]
③ : [1, 3]
④ : [1, 0]
◆正解◆
③ : [1, 3]
リストをキューとして使用した問題です。
・append()はリストの末尾に要素を追加します。
・pop()はリストの末尾からデータを抜き出します。
・pop(0)はリストのインデックス0番目のデータを抜き出します。(引数には任意のインデックス番号を指定することが可能です。)
各行実行後のリストnumsの値
nums.append(1) ・・・ [0, 1]
nums.append(2) ・・・ [0, 1, 2]
nums.pop() ・・・[0, 1]
nums.append(3) ・・・ [0, 1, 3]
nums.pop(0) ・・・ [1, 3]
第4問 リストのスライス
下記のコードを実行した結果として、出力される正しいものはどれか。
list = [1, 2, 3, 4, 5]
print(list[1:3])
① : [1, 2]
② : [2, 3]
③ : [2, 3, 4]
④ : [2, 5]
◆正解◆
② : [2, 3]
リストのスライスは、指定した範囲の要素を含む新しいリストを作成します。list[1:3] は、インデックス1(初期位置)からインデックス3未満(終了位置)までの要素を含むため、[2, 3] が出力されます。
① : [1, 2] ・・・list[0:2]
② : [2, 3] ・・・list[1:3]
③ : [2, 3, 4] ・・・list[1:4]
④ : [2, 5] ・・・list[1::3]
第5問 リスト内包
下記のコードを実行した結果として、出力される正しいものはどれか。
squares = [x**2 for x in range(5)]
print(squares[-1])
① : 0
② : 1
③ : 16
④ : 25
◆正解◆
③ : 16
リストの中でfor文やif文を使用することが出来ます。
今回はfor文を使って、range(5)から整数(0,1,2,3,4)を取り出して2乗した値をリストにしています。(squares =[0, 1, 4, 9, 16])
printの際に使われているsquares[-1]は、スライスの機能を利用してリストの末尾の要素を取り出す命令です。第3問で使ったpop()と取得する値は同じですが、pop()のように元のリストに影響を与えません。
よって、出力は[0, 1, 4, 9, 16]の最後の要素である16となります。
コメント