9章ではPythonにおける「リスト」と「辞書」の使い方について解説します。
本連載講座【Python 基礎編】では、「プログラミング未経験の方」が挫折せずにPythonの基礎を学ぶことができます。
プログラミングを始めて学ぶ方が理解できるよう、丁寧に解説しています。
さらに、学んだ内容を身につけるための演習問題も用意しています。
・Pythonを挫折せずに学習したい
・無料でPythonを確実に習得したい
このような考えを持っている方は、Tech Teacherが運営する【Python 基礎編】を用いて、Pythonの学習をすることをお勧めします!
<目次>
1章:Pythonの特徴・概要
2章:環境構築と基本操作
3章:出力関数print()
4章:数値の型(int、float)と算術演算子
5章:文字列の操作(len・抽出・結合)
6章:真偽値(True・False)・論理演算(AND、OR、NOT)・比較演算子
7章:変数
8章:if文による条件分岐
9章:リストと辞書
10章:for・whileによる繰り返し(ループ)処理
11章:関数の作り方・使い方
12章:クラスとモジュール
リストの定義
『リスト』とは、値を並べて1つのオブジェクトにまとめたものです。
Pythonにおいて、リストはlist型のオブジェクトとして扱われます。
では、まずリストの定義のしかたから見ていきましょう。
リストの定義
リストは以下のように、値をコンマ(,)で区切り、角括弧([])で両端を囲むことで定義します。
nums = [1, 3, 5, 7, 9]
print(nums)
print(type(nums))
[1, 3, 5, 7, 9]
<class 'list'>
リストに含まれる値の型は何でもよく、同一のリストの中に異なる方の値が入っていても大丈夫です。
sample_list = ['apple', 3, 10, 'grape', 'banana']
print(sample_list)
['apple', 3, 10, 'grape', 'banana']
2次元リスト(2次元配列)
リストの中に要素としてリストを入れることも可能です。
mat = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(mat)
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
上の例はリストが2階層の入れ子構造になっているので、2次元リスト(二重リスト)と呼ばれます。
3次元以上のリストももちろん定義できますが、あまり頻繁に使わないのでひとまず2次元リストを扱えるようにしましょう。
リストの操作
リストのインデックス
リストの各要素にはインデックスが振られており、文字列と同じようにインデックスを指定して値を取り出したりすることができます。
1次元リストのインデックスを用いた操作は、文字列の場合とほとんど同じです。(インデックスを用いた操作については5章で詳しく解説しています。)
5章の記事はコチラ↓
https://www.tech-teacher.jp/blog/pythonstandard5_character/
letters = ['a', 'b', 'c', 'd', 'e']
# インデックスが0番目から始まることに注意
print(letters[3])
# 負のインデックスは末尾から何個目かを示す
print(letters[-1])
# スライスもできる
# [(開始):(終了):(間隔)]で取り出し方を指定
print(letters[1:4])
print(letters[2:5:2])
print(letters[3:1:-1])
d
e
['b', 'c', 'd']
['c', 'e']
['d', 'c']
2次元リストでは、1つ目の角括弧([])で内側のリストを指定し、さらに2つ目の角括弧([])で要素を指定することで、値を1つだけ取り出すことができます。
mat = [[1,2,3], [4,5,6], [7,8,9]]
# mat[1]までで、2つ目のリストが取り出される
print(mat[1])
print(mat[1][2])
[4, 5, 6]
6
線形代数で行列に触れたことがある方は、リストを縦に積み重ねてできる行列を考え、行番号と列番号を指定していると考えると分かりやすいと思います。
リストに対する関数
リストに対して操作を行うことができる主な関数を4つ紹介します。
これらはよく使う関数なので、しっかり覚えておきましょう。
関数 | 説明 |
---|---|
max() | リストの全要素の最大値を返す |
min() | リストの全要素の最小値を返す |
sum() | リストの要素の総和を返す |
sorted() | 要素を並べ替えた新たなリストを返す |
max()・min()
max()・min()はそれぞれリストの要素の最大値と最小値を取得する関数です。
nums = [1, 3, 5, 4, 2]
print(min(nums))
print(max(nums))
1
5
sum()
sum()はリストの要素の総和を計算する関数です。
リストに文字列などが含まれているとエラーが出るので注意してください。
nums = [1, 3, 5, 4, 2]
print(sum(nums))
15
sorted()
sorted()は、与えられたリストの要素を昇順に並べ替えた、新たなリストを返す関数です。
sorted関数は要素を並べ替えた新たなリストを返すのに対し、あとで出てくるsortメソッドは元のリスト自体を書き換えます。
両者の使い分けに注意しましょう。
nums = [3, 2, 5, 1, 4]
nums_sorted = sorted(nums)
print(nums) # numsはソートされていないことに注意
print(nums_sorted)
[3, 2, 5, 1, 4]
[1, 2, 3, 4, 5]
また、reverse=True
を括弧の中に書くことで、降順に並び替えることができます。
nums = [3, 2, 5, 1, 4]
nums_sort_rev = sorted(nums, reverse=True)
print(nums_sort_rev)
[5, 4, 3, 2, 1]
リストに対するメソッドと文
Pythonではリストに対して操作を行うことができるメソッドや文が豊富に用意されています。
メソッドは、リストなどオブジェクトの後に.メソッド名()
と記述することで使用できます。(メソッドについては12章で詳しく解説します。)
リストに対する主なメソッド・文は以下の通りです。
メソッド | 説明 |
---|---|
append | 最後尾に要素を追加する |
insert | インデックスで指定した位置に要素を追加する |
del文 | インデックスで指定した要素を削除する |
remove | 指定した要素を削除する |
pop | 指定した要素を取り出してから削除する |
index | 指定した要素のインデックスを返す |
len | リストの長さ(要素数)を返す |
count | 指定した要素の個数を返す |
sort | リストの要素を並べ替える |
append・insert
appendメソッドは、リストの最後尾に要素を追加するメソッドです。
nums = [1, 2, 3, 4, 5]
# 最後尾に追加
nums.append(6)
print(nums)
[1, 2, 3, 4, 5, 6]
insertメソッドは、リストの指定した位置に要素を追加するメソッドです。
nums = [1, 2, 3, 4, 5]
# インデックスを指定して追加
nums.insert(2, 10)
print(nums)
[1, 2, 10, 3, 4, 5]
del
del文は、インデックスで指定した要素を削除する文です。
要素そのものではなく、インデックスを指定して削除する文であるという点に注意しましょう。
nums = [1, 2, 3, 4, 5]
del nums[3]
print(nums)
[1, 2, 3, 5]
remove
removeメソッドは、指定した要素を削除するメソッドです。
こちらはインデックスではなく要素を直接指定します。
nums = [1, 2, 3, 4, 5]
nums.remove(2)
print(nums)
[1, 3, 4, 5]
pop
popメソッドは、指定した要素を取り出して削除するメソッドです。
要素の取り出しと削除を同時に行いたいときに便利です。
nums = [1, 2, 3, 4, 5]
number = nums.pop(4)
print(number)
print(nums)
5
[1, 2, 3, 4]
index
indexメソッドは、指定した要素のインデックスを検索するメソッドです。
指定した要素が重複している場合は、一番先頭に近いインデックスを返します。
nums = [10, 20, 30, 40, 50]
nums_2 = [10, 20, 30, 40, 50, 20, 30]
print(nums.index(10))
print(nums.index(30))
0
2
len
lenメソッド、はリストの長さを取得するメソッドです。
nums = [1, 2, 3, 4, 5]
print(len(nums))
5
count
countメソッドは、指定した要素の個数を数えるメソッドです。
指定した要素が存在しない場合は0が返されます。
fruits = ['apple', 'banana', 'grape', 'apple', 'orange', 'banana']
print(fruits.count('apple'))
print(fruits.count('grape'))
print(fruits.count('peach'))
2
1
0
sort
sortメソッドは、リストの要素を昇順に並べ替えるメソッドです。
sorted関数は要素を並べ替えた新たなリストを返すのに対し、sortメソッドは元のリスト自体を書き換えます。
両者の使い分けに注意しましょう。
nums = [3, 2, 5, 1, 4]
# sortメソッドではnums本体がソートされる(破壊的)
nums.sort()
print(nums)
[1, 2, 3, 4, 5]
またsorted関数と同様に、reverse=True
を括弧の中に書くことで、降順に並び替えることができます。
nums = [3, 2, 5, 1, 4]
nums.sort(reverse=True)
print(nums)
[5, 4, 3, 2, 1]
辞書の定義
Pythonにおける『辞書』とは、キー(名前)と値の組を並べて1つのオブジェクトにまとめたものです。
辞書はdict型のオブジェクトとして扱われます。
では、まず辞書の定義のしかたから見ていきましょう。
辞書の定義
辞書は以下のように、コロン(:)で区切ったキーと値の組をコンマ(,)で区切り、中括弧({})で両端を囲むことで定義します。
price = {'apple': 100, 'banana': 150, 'grape': 500}
print(price)
print(type(price))
{'apple': 100, 'banana': 150, 'grape': 500}
<class 'dict'>
キーの型は文字列や数値などの変更不可能なオブジェクトである必要があります。(変更可能・変更不可能なオブジェクトについては少し難しいのでここでは詳しく扱いません。)
一方、キーに対応する値の型は何でも大丈夫です。
辞書の操作
要素の参照・追加
キーを用いて要素を参照するには、以下のように角括弧([])でキーを囲います。
存在しないキーを指定するとエラーが出るので注意しましょう。
price = {'apple': 100, 'banana': 150, 'grape': 500}
print(price['grape'])
500
辞書に新たなキーと値の組を追加するには、新たなキーを角括弧([])で囲い、そこに新たな値を代入します。
price = {'apple': 100, 'banana': 150, 'grape': 500}
price['orange'] = 200
print(price)
{'apple': 100, 'banana': 150, 'grape': 500, 'orange': 200}
その他の操作
ここでは、辞書に適用すると便利な関数・メソッドを具体例とともにいくつか紹介します。
以下はここで紹介する関数・メソッドをまとめたものです。
関数・メソッド | 説明 |
---|---|
len() | 辞書の長さ(キーと値の組の数)を返す |
list() | キーの一覧をリストとして返す |
del文 | キーから指定した組を削除する |
getメソッド | 指定したキーに対応する値を取得する |
popメソッド | 指定したキーに対応する値を取得し、削除する |
keysメソッド | キーの一覧を返す |
valuesメソッド | 値の一覧を返す |
itemsメソッド | キーと値の組(タプル)の一覧を返す |
len()
len()は、キーと値の組の数(辞書の長さ)を返します。
price = {'apple': 100, 'banana': 150, 'grape': 500}
print(len(price))
3
list()
list()は、各キーが要素となったリストを返します。
price = {'apple': 100, 'banana': 150, 'grape': 500}
print(list(price))
['apple', 'banana', 'grape']
del文
del文を用いて、キーと値の組を削除することができます。
del文では削除したい組のキーを指定します。
price = {'apple': 100, 'banana': 150, 'grape': 500}
del price['banana']
print(price)
{'apple': 100, 'grape': 500}
get
getメソッドは、指定したキーに対応する値を取得するメソッドです。
price = {'apple': 100, 'banana': 150, 'grape': 500}
apple_price = price.get('apple')
print(apple_price)
100
pop
popメソッドは、指定したキーに対応する値を取り出して削除するメソッドです。
price = {'apple': 100, 'banana': 150, 'grape': 500}
banana_price = price.pop('banana')
print(banana_price)
print(price)
150
{'apple': 100, 'grape': 500}
keys・values・items
keysメソッドとvaluesメソッドは、辞書に含まれるすべてのキーや値を取得するメソッドです。
これらのメソッドを用いた後にlist()を適用することで、キーや値の一覧をリストとして扱うことができます。
price = {'apple': 100, 'banana': 150, 'grape': 500}
price_keys = list(price.keys())
price_values = list(price.values())
print(price_keys)
print(price_values)
['apple', 'banana', 'grape']
[100, 150, 500]
itemsメソッドは、辞書に含まれるすべてのキーと値の組を取得するメソッドです。
itemsメソッドを適用して得られるキーと値の組は『タプル』として返されます。
タプル(tuple)とは、簡単に言うと要素が変更できないリストのようなものです。
price = {'apple': 100, 'banana': 150, 'grape': 500}
price_items = list(price.items())
print(price_items)
[('apple', 100), ('banana', 150), ('grape', 500)]
『Tech Teacher』3つの魅力
魅力1. オーダーメイドのカリキュラム
『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。
魅力2. 担当教師によるマンツーマン指導
Tech Teacherでは、完全マンツーマン指導で目標達成までサポートします。
東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
そのため、理解できない箇所は何度も分かるまで説明を受けることができます。
魅力3. 3,960円/30分で必要な分だけ受講
Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです。一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。
まとめ
・魅力1. 担当教師によるマンツーマン指導
・魅力2. オーダーメイドのカリキュラム
・魅力3. 3,960円/30分で必要な分だけ受講
質問のみのお問い合わせも受け付けております。
9章の練習問題
以下の練習問題を解いてみましょう。
練習問題
問1. 次に示すリストli
について、以下の(1)~(6)のプログラムをそれぞれ書いてください。
li = [3, 2, 3, 1, 5]
(1) インデックスが0と-1である要素をそれぞれ出力するプログラム
(2) スライスを用いて、li
の先頭から2番目の値から末尾までを取り出して出力するプログラム
(3) li
の最小値・最大値・総和をそれぞれ出力するプログラム
(4) li
の末尾にint型の6を追加したのち、li
の内容を出力するプログラム
(5) li
の長さを出力するプログラム
(6) li
の内容を昇順に並べ替えたのち、並べ替えたli
の内容を出力するプログラム
問2. 次に示す辞書dic
について、以下の(1)~(3)のプログラムをそれぞれ書いてください。
dic = {'apple': 100, 'banana': 150, 'grape': 500}
(1) dic
のにキーbanana
対応する値を出力するプログラム
(2) dic
のキーapple
と値100
の組を削除し、要素を削除した後のdic
の内容を出力するプログラム
(3) dic
の各キー・各値をそれぞれリストにまとめて出力するプログラム
解答
li = [3, 2, 3, 1, 5]
# (1)
print(li[0])
print(li[-1])
# (2)
print(li[1:])
# (3)
print('max:', max(li))
print('min:', min(li))
print('sum:', sum(li))
# (4)
li.append(6)
print(li)
# (5)
print(len(li))
# (6)
li.sort()
print(li)
3
5
[2, 3, 1, 5]
max: 5
min: 1
sum: 14
[3, 2, 3, 1, 5, 6]
6
[1, 2, 3, 3, 5, 6]
dic = {'apple': 100, 'banana': 150, 'grape': 500}
# (1)
print(dic['banana'])
# (2)
del dic['apple']
print(dic)
# (3)
keys = list(dic.keys())
values = list(dic.values())
print('keys:', keys)
print('values:', values)
150
{'banana': 150, 'grape': 500}
keys: ['banana', 'grape']
values: [150, 500]
次の記事へ