複数の値を扱うデータ型 – 【Pythonプログラミング1 ~基礎編~】

PROGRAMMING

Pythonの複数の値を扱うデータ型(リスト、タプル、辞書)について、演習用プログラムのソースコードを使い、それを実行しながら解説します。

1.演習用プログラムのダウンロード

演習用プログラム( practice06.py )をダウンロードします。
ダウンロードファイルは テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更します。
practice06.py を Python をインストールしたフォルダ(今回は C:\Python)に置きます。


2.ソースコードの表示

メモ帳を使って、演習用プログラム( practice06.py )を開きます。

practice06.py

practice06.py


3.複数の値を扱うデータ型について


7.Pythonの変数の基礎 – 『Pythonではじめるプログラミング入門』では、数値、浮動小数点数、文字列、ブール値の4つのデータ型について学びました。
(7.Pythonの変数の基礎)へのリンク

データ型 説明
int 整数
float 浮動小数点数
str 文字列
bool ブール値

これらのデータ型は、一度に1つだけの値を扱うことができます。

プログラミングでは複数の値を一度に扱えると便利です。
複数の値を1つの変数で管理して、変数の中の値(これらを「要素」と呼ぶ)を取り出したり、
場合によっては変更できると効率的です。
そのためにPythonでは、次のデータ型が提供されています。

リスト型
任意のデータ型(整数、浮動小数点数、文字列など)の値を格納できます。
要素には順序があり、インデックスを用いて要素を指定できます。
リストの要素は変更可能です。
他のプログラミング言語の「配列変数」のような扱いになります。

タプル型
任意のデータ型(整数、浮動小数点数、文字列など)の値を格納できます。
要素には順序があり、インデックスを用いて要素を指定できます。
リスト型とは異なり、タプル型の要素は変更ができません。

辞書型
キーと値がセットとなった値を格納することができます。
要素は順序を持ちません(インデックスによる要素の指定ができません)。

それでは、複数の値を1度に扱うことができるデータ型を見ていきましょう。

4.リスト型

① リストを作成する

コマンドプロンプト で practice06.py を実行します。
プログラムを実行する方法は、こちらの記事『ファイルに保存されたプログラムの実行』を参照します。
以下のように表示されます。

C:\Users\kotablog>python "C:\Python\practice06.py"
リストを作成
['札幌', '東京', '名古屋', '大阪', '福岡']
5
<class 'list'>

 
プログラムソースを確認します。


01 # -*- coding: utf-8 -*-
02 """
03 演習プログラム6
04 
05   複数の値を扱うデータ型
06 
07 """
08 import sys  # モジュールのインポート
09 
10 # リストを作成する
11 print("\nリストを作成")
12 list1 = ['札幌', '東京', '名古屋', '大阪', '福岡']
13 print(list1)
14 print(len(list1))   # len()は要素の数を返す関数
15 print(type(list1))  # type()はオブジェクトの型を返す関数
16 
17 #終了1
18 sys.exit()

12行目の
list1 = ['札幌', '東京', '名古屋', '大阪', '福岡']
で、list1 という名前の5つの要素を含んだリストを作成しています。
13行目の print() で、list1 の要素を表示することができます。
14行目の 関数 len() で、リストに含まれる要素の数を取得することができます。
15行目の 関数 type() で、変数の型を取得することができます。
今回はリストなので、<class 'list'> と表示されました。

② リストから要素を取り出す

ソースコード #終了1 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

C:\Users\kotablog>python "C:\Python\practice06.py"

リストを作成
['札幌', '東京', '名古屋', '大阪', '福岡']
5
<class 'list'>

インデックス1の要素を取り出す
東京
<class 'str'>

インデックス2からインデックス3の要素を取り出す
['名古屋', '大阪']
<class 'list'>

 
リストの要素はゼロから始まるインデックス(番号)が付与されます。

要素     ['札幌', '東京', '名古屋', '大阪', '福岡']
インデックス   0    1    2    3    4

インデックスを指定することでリストから要素を取り出すことができます。


20 # リストから要素を取り出す
21 print("\nインデックス1の要素を取り出す")
22 strWork = list1[1]
23 print(strWork)
24 print(type(strWork))

インデックスは、スライスを使って範囲指定することができます。

スライス
[start: end]
start から end-1 までの範囲指定となります。


26 print("\nインデックス2からインデックス3の要素を取り出す")
27 listWork = list1[2:4]  # スライスで範囲指定
28 print(listWork)
29 print(type(listWork))
30 
31 #終了2
32 sys.exit()

複数の要素を取り出したときのデータ型は リスト になります
<class 'list'>

③ リストに要素を追加する

ソースコード #終了2 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

那覇を追加
['札幌', '東京', '名古屋', '大阪', '福岡', '那覇']

インデックス1に仙台を追加
['札幌', '仙台', '東京', '名古屋', '大阪', '福岡', '那覇']

 
リストに要素を追加するときは、関数 append() を使います。
リストの末尾に要素が追加されます。


34 # リストに要素を追加する
35 print("\n那覇を追加")
36 list1.append('那覇')
37 print(list1)

任意の位置に要素を追加するときは、関数 insert() を使って、追加したい位置のインデックスを指定します。


39 # リストの指定した位置に要素を追加する
40 print("\nインデックス1に仙台を追加")
41 list1.insert(1, '仙台')
42 print(list1)
43 
44 #終了3
45 sys.exit()

④ リストから要素を削除する

ソースコード #終了3 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

那覇を削除
['札幌', '仙台', '東京', '名古屋', '大阪', '福岡']

インデックス1の仙台を削除
['札幌', '東京', '名古屋', '大阪', '福岡']

インデックス2から最後までを削除
['札幌', '東京']

 
リストから要素を削除するときは、関数 remove() を使います。


47 # リストから要素を削除する
48 print("\n那覇を削除")
49 list1.remove('那覇')
50 print(list1)

インデックスで削除する要素を指定する場合は、del文 を使います。


52 # インデックスを指定して要素を削除する
53 print("\nインデックス1の仙台を削除")
54 del list1[1]
55 print(list1)

インデックスで範囲を指定して要素を削除する場合は、del文 と スライス を使います。
スライス [start: end]
end を省略すると要素の最後までを指定したことになります。


57 # インデックスで範囲を指定して要素を削除する
58 print("\nインデックス2から最後までを削除")
59 del list1[2:]
60 print(list1)
61 
62 #終了4
63 sys.exit()

⑤ 2次元リストを作成する

ソースコード #終了4 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

2列5行のlistを作成
[['', ''], ['', ''], ['', ''], ['', ''], ['', '']]

 
2次元リストを作成するときは、リスト内包表記を使います。
[["" for j in range(列数)] for i in range(行数)]


65 # 2次元リストの作成
66 print("\n2列5行のlistを作成")
67 list2 = [["" for j in range(2)] for i in range(5)]  # リスト内包表記
68 print(list2)
69 
70 #終了5
71 sys.exit()

⑥ 2次元リストに要素をセットする

ソースコード #終了5 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

1列目に県庁所在地の要素をセット
[['札幌', ''], ['東京', ''], ['名古屋', ''], ['大阪', ''], ['福岡', '']]

2列目に人口の要素をセット
[['札幌', 1952000], ['東京', 9821798], ['名古屋', 2296000], ['大阪', 2691000], ['福岡', 228000]]

 
行と列の指定は次のようになります。
リスト[行][列]
それぞれゼロ始まりになります。


73 # 1列目に要素をセットする
74 print("\n1列目に県庁所在地の要素をセット")
75 list1 = ['札幌', '東京', '名古屋', '大阪', '福岡']
76 for i in range(0, len(list1)):  # len()は要素の数を返す関数
77   list2[i][0] = list1[i]
78 print(list2)

76行目の、for文 で list1 の要素を1つ1つ取り出しながら、
77行目で、1列目の要素としてセットしていきます。


80 # 2列目に要素をセットする
81 print("\n2列目に人口の要素をセット")
82 listPop = [1952000, 9821798, 2296000, 2691000, 228000]
83 for i in range(0, len(listPop)):
84   list2[i][1] = listPop[i]
85 print(list2)
86 
87 #終了6
88 sys.exit()

83行目の、for文 で listPop の要素を1つ1つ取り出しながら、
84行目で、2列目の要素としてセットしていきます。

⑦ 2次元リストからデータを取り出す

ソースコード #終了6 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

インデックス3(大阪)の人口を取り出す
大阪の人口は 2,691,000人です

全ての県庁所在地と人口を取り出す
札幌の人口は 1,952,000人です
東京の人口は 9,821,798人です
名古屋の人口は 2,296,000人です
大阪の人口は 2,691,000人です
福岡の人口は 228,000人です

 
4行目の大阪はインデックスは3になりますので、
県庁所在地は、list2[3][0] 1列目のインデックスは0
人口は、list2[3][1] 2列目のインデックスは1
となります。

94行目では、数値にカンマ編集をしています。
'{:,}'.format()


90 #2次元リストからデータを取り出す
91 print("\nインデックス3(大阪)の人口を取り出す")
92 strPlace = list2[3][0]  # インデックス3の県庁所在地を取り出す
93 intPop   = list2[3][1]  # インデックス3の人口を取り出す
94 strPop   = '{:,}'.format(intPop)  # 人口の数値をカンマ編集
95 strWork = strPlace + "の人口は " + strPop + "人です"
96 print(strWork)

2次元リストから全ての要素を取り出すときは、
99行目の、for文 を使って1行ずつ(県庁所在地と人口)を取り出していきます。
element はリスト型になります。


 98 print("\n全ての県庁所在地と人口を取り出す")
 99 for element in list2:
100   strPlace = element[0]  # 県庁所在地
101   intPop   = element[1]  # 人口
102   strPop   = '{:,}'.format(intPop)
103   strWork = strPlace + "の人口は " + strPop + "人です"
104   print(strWork)
105 
106 #終了7
107 sys.exit()

5.タプル型


タプル型はリスト型とは異なり、要素の変更ができません。

① タプルを作成する

ソースコード #終了7 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

タプルを作成
('札幌', '東京', '名古屋', '大阪', '福岡')
5
<class 'tuple'>

 


109 # タプルを作成します
110 print("\nタプルを作成")
111 tuple1 = ('札幌', '東京', '名古屋', '大阪', '福岡')
112 print(tuple1)
113 print(len(tuple1))   # len()は要素の数を返す関数
114 print(type(tuple1))  # type()はオブジェクトの型を返す関数
115 
116 #終了8
117 sys.exit()

111行目の
tuple1 = ('札幌', '東京', '名古屋', '大阪', '福岡')
で、tuple1 という名前の5つの要素を含んだタプルを作成しています。
112行目の print() で、tuple1 の要素を表示することができます。
113目の 関数 len() で、タプルに含まれる要素の数を取得することができます。
114行目の 関数 type() で、変数の型を取得することができます。
今回はタプルなので、<class 'tuple'> と表示されました。

② タプルから要素を取り出す

ソースコード #終了8 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

インデックス1の要素を取り出す
東京
<class 'str'>

インデックス2からインデックス3の要素を取り出す
('名古屋', '大阪')
<class 'tuple'>

 
タプルの要素はゼロから始まるインデックス(番号)が付与されます。

要素     ('札幌', '東京', '名古屋', '大阪', '福岡')
インデックス   0    1    2    3    4

インデックスを指定することでタプルから要素を取り出すことができます。


119 # タプルから要素を取り出す
120 print("\nインデックス1の要素を取り出す")
121 strWork = tuple1[1]  # インデックス1の要素を取り出す
122 print(strWork)
123 print(type(strWork))

インデックスは、スライスを使って範囲指定することができます。

スライス
[start: end]
start から end-1 までの範囲指定となります。


125 print("\nインデックス2からインデックス3の要素を取り出す")
126 tupleWork = tuple1[2:4]  # スライスで範囲指定
127 print(tupleWork)
128 print(type(tupleWork))
129 
130 #終了9
131 sys.exit()

複数の要素を取り出したときのデータ型は タプル になります
<class 'tuple'>

6.辞書型


辞書型は、キーと値がセットとなった値を格納することができます。

① 辞書を作成する

ソースコード #終了9 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

辞書を作成
{'東京': 9821798, '名古屋': 2296000}
2
<class 'dict'>

 


133 # 辞書を作成します
134 print("\n辞書を作成")
135 dict1 = {'東京' : 9821798, '名古屋' : 2296000}
136 print(dict1)
137 print(len(dict1))   # len()は要素の数を返す関数
138 print(type(dict1))  # type()はオブジェクトの型を返す関数
139 
140 #終了10
141 sys.exit()

135行目の
dict1 = {'東京' : 9821798, '名古屋' : 2296000}
で、dict1 という名前の2組の要素を含んだ辞書を作成しています。

キー:県庁所在地
値 :人口

136行目の print() で、dict1 の要素を表示することができます。
137目の 関数 len() で、辞書に含まれる要素の数を取得することができます。
138行目の 関数 type() で、変数の型を取得することができます。
今回は辞書なので、<class 'dict'> と表示されました。

② 辞書にデータを追加する

ソースコード #終了10 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

辞書に大阪の人口を追加
{'東京': 9821798, '名古屋': 2296000, '大阪': 2691000}

 


143 # 辞書にデータを追加する
144 print("\n辞書に大阪の人口を追加")
145 dict1['大阪'] = 2691000
146 print(dict1)
147 
148 #終了11
149 sys.exit()

145行目の 辞書名[キー] = 値 で、データを追加しています。

③ 辞書からデータを取り出す

ソースコード #終了11 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

辞書から大阪の人口を取り出す
大阪の人口は 2,691,000人です

 


151 # 辞書からデータを取り出す
152 print("\n辞書から大阪の人口を取り出す")
153 if '大阪' in dict1:  # 辞書のキーに大阪が存在するかを確認
154   intPop = dict1['大阪']
155   strPop   = '{:,}'.format(intPop)
156   strWork = "大阪の人口は " + strPop + "人です"
157   print(strWork)
158 else:
159   print("辞書のキーに大阪は存在しません")

辞書からデータを取り出すには、キーを指定します。
まず、辞書にキーが存在しているかの確認が必要です。
153行目の、if キー in 辞書名: で、キーが存在する場合は True、存在しない場合は False が返ります。
154行目の、辞書名[キー] で値を取り出すことができます。
 

複数の値を扱うデータ型 文字列の操作>
タイトルとURLをコピーしました