練習問題:リスト | データ構造#

Jupyter Notebook ファイルの準備

課題用に「practice8-1.ipynb」 という名前で Jupyter Notebook のファイルを作成してください。

この練習問題を通して、 リスト | データ構造 で学習した内容を改めて確認してください。

リストの基本操作#

問題1#

以下の表に示す学生名簿を表すリストを作成し、変数 student_list に代入してください。なお、各学生のレコードは [出席番号, 名前(姓), 名前(名)] のリストで表すものとします。

出席番号

名前(姓)

名前(名)

1

田中

太郎

2

山田

花子

3

佐藤

4

鈴木

問題2#

以下のリスト letters から、次の要素をそれぞれブラケット表記法を用いて取得し、print 関数で内容を出力してください。

letters = ["P", "Y", "T", "H", "O", "N"]
  • 先頭の要素

  • 先頭から数えて3番目の要素

  • 末尾の要素

  • 末尾から数えて3番目の要素

問題3#

以下の二次元リスト user_table から、次の要素をそれぞれブラケット表記法を用いて取得し、print 関数で内容を出力してください。

# データベースのテーブルから取得したユーザー情報を想定した二次元スト
user_table = [
    ['id', 'login_id', 'user_name'],  # 0 番目の要素はカラム名を表すリスト
    [1, 'user_001', 'Mitarai'],  # 各ユーザーのレコードを表すリスト
    [2, 'user_002', 'Yano'],
    [3, 'user_003', 'Kohara'],
]
  • id 列の値が 1 である要素(ユーザー)の login_id の値

  • id 列の値が 3 である要素(ユーザー)の user_name の値

問題4#

以下のリスト kyushu から、for 文を用いて繰り返し要素を取得し、それぞれ print 関数で内容を出力してください。

kyushu = ["Fukuoka", "Kumamoto", "Nagasaki", "Oita", "Saga", "Kagoshima", "Miyazaki", "Okinawa"]

リストのスライス#

問題#

リスト letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] から、次の部分リストを取得して表示するスクリプトを、スライスを使用して作成してください。

  1. ['c', 'd', 'e', 'f']

  2. ['b', 'd', 'f']

  3. ['a', 'd', 'g']

  4. ['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']

  5. ['g', 'e', 'c', 'a']

メソッドを利用したリストの操作#

問題1#

次のリスト survey_results から、次の情報を取得し、print 関数でそれぞれ出力してください。

# 全従業員の通勤に利用する交通手段の調査結果
survey_results = ['bus & train', 'bus', 'train', 'bicycle', 'on foot',
                  'train', 'bus', 'on foot', 'bus & train', 'bicycle']

【 取得する情報 】

  1. 'train' と等しい値をもつ最初の要素のインデックス

  2. 'bicycle' と等しい値をもつ要素の個数

  3. 通勤で 'bus' を利用する従業員の人数

問題2#

次のリスト numbers に、以下の整数値を、それぞれ指定された位置(インデックス)へ順番に追加してください。また、要素の追加を終えたリスト numbersprint 関数で出力してください。

numbers = [6, 12, 18, 30, 36, 42, 48]
  1. 54 を末尾に追加

  2. 241830 の間に追加

問題3#

次のリスト program_languages から、それぞれ以下の要素を順番に削除してください。また、要素の削除を終えたリスト numbersprint 関数で出力してください。

program_languages = ['Java', 'Python', 'JavaScript', 'TypeScript',
                     'Perl', 'Ruby', 'Kotlin', 'Go', 'Rust', 'PHP',
                     'Swift', 'C', 'C++', 'C#', 'COBOL', 'FORTRAN']
  • 末尾とそのひとつ前の要素

  • 'Perl' と等しい値をもつ要素

問題4#

次のトランプのカードを順番に並べたリスト cards の要素を逆順に並べ替え、 print 関数で出力してください。

cards = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']

リストのアンパック#

問題1#

次の3つのリストの要素を odakyu_linesoutetsu_lineenoshima_line、の順に結合した新しいリスト route を、アンパックを利用して作成し、print 関数で出力してください。ただし、同じ値をもつ要素が重複しないように、スライスを上手く併用してください。

odakyu_line = ['本厚木駅', '厚木駅', '海老名駅']
soutetsu_line = ['海老名駅', 'かしわ台駅', 'さがみ野駅', '大和駅']
enoshima_line = ['大和駅', '鶴間駅', '南林間駅', '中央林間駅']

【 期待する出力 】

['本厚木駅', '厚木駅', '海老名駅', 'かしわ台駅', 'さがみ野駅', '大和駅', '鶴間駅', '南林間駅', '中央林間駅']

問題2#

リストのアンパックを用いて、次のリスト user_record の要素を先頭から順番に、変数 idlogin_iduser_name へ一括で代入してください。また、各変数に代入された値を print 関数で出力して結果を確かめてください。

user_record = [1, 'user_001', 'Mitarai']

リストと演算子#

問題1#

以下の2つのリスト cards_2cards_2 を比較し、同じ値をもつ要素(共通の要素)が何個あるかを調べ、結果を print 関数で出力してください。

cards_1 = ['2', '5', 'K', 'A', 'J', '8']
cards_2 = ['8', '10', 'J', '3', '6', 'A']

問題2#

以下のリスト pitch_names を用いて指定された要素をもつリスト music を作成し、print 関数で出力してください。

【 使用するリスト 】

pitch_names = ['ド', 'レ', 'ミ', 'ファ', 'ソ', 'ラ', 'シ']

【 作成するリストの要素 】

['ド', 'レ', 'ミ', 'ファ', 'ミ', 'レ', 'ド', 'ミ', 'ファ', 'ソ', 'ラ', 'ソ', 'ファ', 'ミ']

リストの内包表記#

問題1#

1 から 6 の数字を要素にもつリスト nums から、各要素を 2 倍にした値を要素とするリスト nums_double を、リストの内包表記を使用して作成してください。

nums = [1, 2, 3, 4, 5, 6]
nums_double = # ここに内包表記を使用した式を記述
print(nums_double)  # [2, 4, 6, 8, 10, 12]

問題2#

以下のリスト numbers から、1.0 以上かつ 2.0 未満の要素を取り出したリスト result を作成し、表示するスクリプトを作成してください。

numbers = [2.1, 0.2, 0.3, 1.4, 3.1, 0.3, 1.6]
# ここに result を作成するコードを追加
print(result)  # [1.4, 1.6]