プログラム&IT教育

Python入門~3章-3:その他の型編~

スポンサーリンク

データ型の種類<リスト型>

⑥リスト型

データ型の種類として「リスト型」というものがあります。
リストという大きな箱に、小さなデータを複数入れることができる、というイメージです。
データをまとめることができる便利な型なので、
頻繁に利用されるデータ型になります。
※C言語の配列と同じ型になります。

リスト型のフォーマットは、
“[a, b, c, ・・・ ]”
となり、”[“ではじまり”]”で終わります。
その中に入るデータを”,”でくくります。

リスト型の例)
[(文字列型)"abcde",(整数型)100,(文字列型)'hello']

というような形で、
文字列型、整数型など異なる型をまとめて
書くことができます。

リスト型に定義した値は、変数に入れることができます。
また、リスト型のそれぞれのデータを要素と呼びます。
リスト型のデータの要素は、左から順番に
0,1,2,・・・と数えます。

次のサンプルプログラムで「リスト型」の使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

exlist = ["abcde", 100, 'hello']
print(exlist)
print(exlist[2])

<実行結果>

>>> exlist = ["abcde", 100, 'hello']
>>> print(exlist)
['abcde', 100, 'hello']
>>> print(exlist[2])
hello

リスト型exlistに定義した値
“abcde”, 100, ‘hello’
が、出力できました。

リスト型exlistの要素2番目の値を出力すると、
“hello”
が出力されました。

※リスト型の要素は0番目からはじまります。この例では
exlistの要素[0]は、”abcde”
exlistの要素[1]は、100
exlistの要素[2]は、’hello’
が格納されています。

リスト型の機能(データを追加する):append()

リスト型には、あとからリストにデータを追加することができます。

使い方は、リスト型の変数のあとに、
「append(“追加したいデータ”)」という関数[メソッド]を実行します。

次のサンプルプログラムで「append()」の使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

exlist = ["abcde", 100, 'hello']
exlist.append("world")
print(exlist)

exlistというリスト型の最後に、
“world”という文字列型の文字列を追加しました。
これを出力した結果は次のようになります。

<実行結果>

>>> exlist = ["abcde", 100, 'hello']
>>> exlist.append("world")
>>> print(exlist)
['abcde', 100, 'hello', 'world']

exlistのリスト型の変数に、
“world”という文字列が追加されました。

リスト型の機能(データを削除する):remove()

リスト型のデータを、あとから削除することができます。
使い方は、リスト型の変数のあとに、
「remove(“削除したいデータ”)」という関数[メソッド]を実行します。

次のサンプルプログラムで「remove()」の使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

exlist = ["abcde", 100, 'hello']
exlist.remove("hello")
print(exlist)

exlistというリスト型から
“hello”という文字列型の文字列を削除しました。
これを出力した結果は次のようになります。

<実行結果>

>>> exlist = ["abcde", 100, 'hello']
>>> exlist.remove("hello")
>>> print(exlist)
['abcde', 100]

exlistのリスト型の変数から、
“hello”という文字列が削除されました。

リスト型の機能(データの順番を変更する):sort()

リスト型のデータの中身の順番を
整数なら小さい順に
文字列ならアルファベット順に
並び替えることができます。

※ただし、リスト型のデータの型に、
文字列型と数値型が混じっていると
文字列と数値どちらが小さいのか判断できないので
並び替えができません。

使い方は、リスト型の変数のあとに、
「sort()」という関数[メソッド]を実行します。

次のサンプルプログラムで「sort()」の使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

exlist = ["orange", "grape", "apple"]
exlist.sort()
print(exlist)

exlistというリスト型(文字列)を
アルファベット順に並び変えるようにしました。
これを出力した結果は次のようになります。

<実行結果>

>>> exlist = ["orange", "grape", "apple"]
>>> exlist.sort()
>>> print(exlist)
['apple', 'grape', 'orange']

アルファベット順に並び変えられたので、
‘apple’, ‘grape’, ‘orange’
で出力されました。

次に数値型のリストで確認します。

exlist = [100, 5, 39]
exlist.sort()
print(exlist)

exlistというリスト型(数値型)を
小さい順に並び変えるようにしました。
これを出力した結果は次のようになります。

>>> exlist = [100, 5, 39]
>>> exlist.sort()
>>> print(exlist)
[5, 39, 100]

小さい順に並び変えられて
[5, 39, 100]
で出力されました。

リスト型の機能(任意のデータを書き換える)

リスト型には任意の場所のデータを、上書きで変更することができます。

使い方は、リスト型の要素番号を指定し、
変更したいデータを記載することで、その要素番号のデータが上書きされます。
次のサンプルプログラムで使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

exlist = ["orange", "grape", "apple"]
exlist[1] = "cherry"
print(exlist)

exlistの要素番号[1]には、”grape”という文字列が入っています。
これを”cherry”という文字列で上書きする
というプログラムになります。
これを出力した結果は次のようになります。

<実行結果>

>>> exlist = ["orange", "grape", "apple"]
>>> exlist[1] = "cherry"
>>> print(exlist)
['orange', 'cherry', 'apple']

exlistの要素番号[1]の”grape”が、
“cherry”という文字列で上書きされて、exlistが出力されました。

データ型の種類<辞書型>

⑦辞書型

データ型の種類として「辞書型」というものがあります。
本物の辞書のように、「見出し」と「用語の説明」のような形で、
「見出し:見出しに関するデータ」をセットにして使います。

「見出しに関するデータ」ですが、これまでに出てきた
数字型や文字列型のデータを使います。

使い方は、以下のようになります。

{見出し1:見出し1のデータ, 見出し2:見出し2のデータ, ・・・}

リスト型と同じように
辞書型に定義した値は、変数に入れることができます。

次のサンプルプログラムで「辞書型」の使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

exdic = {"orange":100, "grape":200, "apple":300}
exdic["orange"]

辞書型exdicに代入した「orange」の中身のデータを確認します。

<実行結果>

>>> exdic = {"orange":100, "grape":200, "apple":300}
>>> exdic["orange"]
100

辞書型exdicに代入した「orange」の中身のデータである”100″が、出力できました。

データ型の種類<タプル型>

⑧タプル型

データ型の種類として「タプル型」というものがあります。
タプル型は、⑥リスト型とよく似た作りになっており、
複数のデータを1つにまとめることができます。

タプル型はリスト型と異なり、
はじめに定義したデータから
データの中身の変更ができません。
※リスト型は追加・変更・削除等ができます

タプル型のフォーマットは、

"(a, b, c, ・・・ )"

となり、"("ではじまり")"で終わります。
その中に入るデータを","でくくります。

次のサンプルプログラムで「タプル型」の使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

extuple = ("orange", "grape", "apple", "cherry")
print(extuple)

タプル型extupleの中身のデータを確認します。

<実行結果>

>>> extuple = ("orange", "grape", "apple", "cherry")
>>> print(extuple)
('orange', 'grape', 'apple', 'cherry')

次に、タプル型extupleのデータを、ソートできるか確認してみます。

>>> extuple.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'sort'

tuple型のデータは、sortできませんというエラーが出ました。

リスト型と似ていますが、タプル型ではリスト型と同じ働きはできません。

タプルとリストを併記する

タプル型のデータの中に、リスト型のデータを書くことができます。
また、その逆で
リスト型のデータの中に、タプル型のデータを書くことができます。

次のサンプルプログラムで「タプル型とリスト型の入れ子」の使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

str1 = ("orange", ["grape", "apple"], "cherry")
print(str1)

str1はタプル型の中に、リスト型のデータがあります。
これをsortするとどうなるか確認してみましょう。

str1.sort()

<実行結果>

>>> str1.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'sort'

tuple型のデータは、sortできませんというエラーが出ました。

str2 = ["orange", ("grape", "apple"), "cherry"]
print(str2)

str2はリスト型の中に、タプル型のデータがあります。
これをsortするとどうなるか確認してみましょう。

<実行結果>

               str2.sort()
Traceback (most recent call last):
File "", line 1, in
TypeError: '<' not supported between instances of 'tuple' and 'str'

tuple型とstr型のデータは、サポートしていませんというエラーが出ました。

では、リスト型の要素番号0番目を書き換えられるか確認します。

str2[0] = "mikan"
print(str2)

<実行結果>

>>> str2[0] = "mikan"
>>> print(str2)
['mikan', ('grape', 'apple'), 'cherry']

リスト型の要素番号0番目の書き換えができました。

データ型の種類<集合(セット)型>

⑨集合(セット)型

集合(セット)型は、リスト型とタプル型と同じような利用方法で、
複数あるデータを1つにまとめることが可能なデータ型になります。
集合(セット)型の特徴としては、データの要素に順番がなく(並び替えされる)、
また重複をしない(同じデータは1つになる)という性質があります。

使い方は、以下のようになります。

{データ1, データ2, ・・・}

次のサンプルプログラムで「集合(セット)」の使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

data = {"orange", "grape", "apple", "orange"}
print(data)

dataの要素0番目と3番目が、”orange”で重複しています。
集合(セット)型dataの中身を確認してみます。

<実行結果>

>>> data = {"orange", "grape", "apple", "orange"}
>>> print(data)
{'apple', 'grape', 'orange'}

データの要素で重複していた”orange”が1つになっています。
また、それぞれの要素ですが、
アルファベット順に並び替えがされています。

もう1つ整数のサンプルも確認してみます。

data = {10, 5, 3, 5, 4, 2, 6, 8, 10}
print(data)

dataの要素”10,5,3″が重複しています。
集合(セット)型dataの中身を確認してみます。

<実行結果>

>>> data = {10, 5, 3, 5, 4, 2, 6, 8, 10}
>>> print(data)
{2, 3, 4, 5, 6, 8, 10}

データの要素で重複していた”10,5,3″がなくなり1つになっています。
また、整数が小さい順に並び替えがされています。

集合(セット)型の機能(集合型をつくる):set()

すでにあるデータ型や、新しく集合型をつくることができる
set()という関数があります。

新しく集合型を作る場合は以下のように書きます。

set(集合型にしたいデータ)

次のサンプルプログラムで使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

newdata1 = set('orange')
print(newdata1)

‘orange’という文字列を集合型にしました。

<実行結果>

>>> newdata1 = set('orange')
>>> print(newdata1)
{'e', 'r', 'a', 'n', 'g', 'o'}

orangeの文字列から1文字ずつバラバラの要素として、集合型に定義されました。続けて、整数でも確認してみましょう。

newdata2 = set('98765234')
print(newdata2)

<実行結果>

>>> newdata2 = set('98765234')
>>> print(newdata2)
{'5', '6', '8', '4', '9', '3', '2', '7'}

98765234の文字列から1文字ずつバラバラの要素として、集合型に定義されました。

データの要素をまとめて登録したい場合

データの要素をまとめて登録したい場合は、リスト型に定義してからセットします。次のサンプルプログラムで確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

data = ["orange", "grape", "apple"]
newdata = set(data)
print(newdata)

<実行結果>

>>> data = ["orange", "grape", "apple"]
>>> newdata = set(data)
>>> print(newdata)
{'apple', 'grape', 'orange'}

リスト型dataを、集合型newdataにセットしました。
そのため、リスト型のそれぞれのデータで出力されました。

集合(セット)型に要素を追加する:add()

add()を使うことで、集合型の要素を追加ができます。使い方は次のようになります。

add(追加したい集合型のデータ)

次のサンプルプログラムで使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

data = ["orange", "grape", "apple"]
newdata = set(data)
newdata.add("mikan")
print(newdata)

<実行結果>

>>> data = ["orange", "grape", "apple"]
>>> newdata = set(data)
>>> newdata.add("mikan")
>>> print(newdata)
{'apple', 'grape', 'orange', 'mikan'}

“mikan”の要素が追加された集合型が出力されました。

集合(セット)型から要素を削除する:discard()

discard()を使うことで、集合型の要素からデータを削除できます。使い方は次のようになります。

discard(削除したい集合型のデータ)

次のサンプルプログラムで使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

data = ["orange", "grape", "apple"]
newdata = set(data)
newdata.discard("grape")
print(newdata)

<実行結果>

>>> data = ["orange", "grape", "apple"]
>>> newdata = set(data)
>>> newdata.discard("grape")
>>> print(newdata)
{'apple', 'orange'}

“grape”の要素が削除された集合型が出力されました。

集合(セット)型から全要素を削除する:clear()

clear()を使うことで、集合型の要素から全データを削除できます。使い方は次のようになります。

clear()

次のサンプルプログラムで使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

data = ["orange", "grape", "apple"]
newdata = set(data)
newdata.clear()
print(newdata)

集合型newdataの全データを削除する処理を行いました。

<実行結果>

>>> data = ["orange", "grape", "apple"]
>>> newdata = set(data)
>>> newdata.clear()
>>> print(newdata)
set()

集合型newdataの全データが削除されています。

集合(セット)型から要素数を取得する:len()

len()を使うことで、集合型の要素数を取得できます。使い方は次のようになります。

len(要素数を取得したい集合型のデータ)

次のサンプルプログラムで使い方を確認しましょう。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

data = ["orange", "grape", "apple"]
newdata = set(data)
len(newdata)

<実行結果>

>>> data = ["orange", "grape", "apple"]
>>> newdata = set(data)
>>> len(newdata)
3

リスト型dataの要素が3つあり、集合型newdataにセットしていますので、
要素が3つ、として数が出力されました。

集合(セット)型同士で計算する

集合(セット)型には、集合(セット)型同士での演算ができます。ここではよくつかわれる例をサンプルプログラムで説明します。

Pythonコマンドを実行して、以下のプログラムを対話モードで確認してみてください。

data1 = {"orange", "grape", "apple"}
data2 = {"orange", "grape", "apple", "cherry"}
data2 - data1

集合(セット)型「data2からdata1」の差をとります。

<実行結果>

>>> data1 = {"orange", "grape", "apple"}
>>> data2 = {"orange", "grape", "apple", "cherry"}
>>> data2 - data1
{'cherry'}

集合(セット)型「data2からdata1」の差は、”cherry”になりました。もう1つサンプルプログラムで確認します。

data1 = {"orange", "grape", "apple"}
data2 = {"orange", "grape", "apple", "cherry"}
data1 & data2

集合(セット)型「data1とdata2」の共通部分(同じところ)をとります。

<実行結果>

>>> data1 = {"orange", "grape", "apple"}
>>> data2 = {"orange", "grape", "apple", "cherry"}
>>> data1 & data2
{'grape', 'apple', 'orange'}

集合(セット)型「data1とdata2」の共通部分は
{‘grape’, ‘apple’, ‘orange’}になりました。

このように、集合(セット)型の特徴として、集合(セット)型同士で
差分をとったり共通部分を求めたりできます。

おさらい

⑥リスト型
リスト型の機能(データを追加する):append()
リスト型の機能(データを削除する):remove()
リスト型の機能(データの順番を変更する):sort()
リスト型の機能(任意のデータを書き換える)
⑦辞書型
⑧タプル型
タプルとリストを併記する
⑨集合(セット)型
集合(セット)型の機能(集合型をつくる):set()
集合(セット)型に要素を追加する:add()
集合(セット)型から要素を削除する:discard()
集合(セット)型から全要素を削除する:clear()
集合(セット)型から要素数を取得する:len()
集合(セット)型同士で計算する
モバイルバージョンを終了