Pythonのデータ型(後半)



こんにちは、切口太郎です。

今日は、Python の変数と型についてお話します。
Python は、クラスを作成することにより、無限大に型を増やすことができますが、基本の組み込み型について見ていきましょう。

Python には、7つの基本型があります。

1 数値型
2 文字型
3 ブール型
4 リスト
5 タプル
6 辞書
7 集合


後半では、4~7までを扱います。


4 リスト


リストは、Python で可変長配列を扱う便利なデータ型です。
リストは、Python のプログラムでとても良く利用されます。

リストと同じで タプルがありますが、タプルとリストの違いは、配列のデータを変更できるかできないかです。

データ型
リスト
タプル
配列項目の変更
配列への項目追加
配列の項目削除

タプルは、項目に対しての変更ができないので、項目の変更、追加、削除ができません。
リストは、変更ができるので、すべての操作ができます。

リストの項目は、数値、ブール値、文字列、後述する辞書、集合のどれでも設定ができます。
また、混在して設定することもできます。
lst = [1 , 2 , 3 , 'a'']

関数
説明
可変長配列
list(data)

変更できる可変長配列
リストデータの1部(要素)の書き換えができる。
登録順序を保持する。
lst =[]
lst = [10, 11, 12, 13]
lst = ['a', 'b' , 'c']
lst = [1 , 2 , 3 , 'a'']
lst = list('a', 'b' , 'c')

リストには、いろいろなメソッドが用意されています。
リストを作成した後は、用意されたメソッドを利用して、データの取り出しや変更、削除を行います。

よく使うメソッド
メソッド
説明
clear
リストの要素をすべて削除する。
lst.clear()
pop(index)
リストから index の要素を取り出す
(削除する)
value = lst.pop(0)
get(index)
リストから index の要素を取り出す
value = lst.get(0)
remove(index)
remove(data)
リストから index の要素を削除する。
または、リストから dataと同じ要素を削除する。
lst.remove(3)
lst.remove('a')
insert(index , data)
リストの index 位置に、data を追加する。
lst.insert(0 , 'abc')
append(data)
リストの末尾に data を追加する。
lst.append('EOF')

5 タプル


データの要素数が変更できないリストです。
タプルは一度定義すると、内容が変更できないので、使いみちが限定されます。
良く利用されるのは、定数を定義する時などです。
タプルで定義すると、プログラムで値が変更できないので、誤って(コーディングミス)で値が変更されることがありません。

関数
説明
可変長配列
tuple(data)
変更できない可変長配列
リストデータは変更ができない。
登録順序を保持する。
tpl=()
tpl= (10, 11, 12, 13)
tpl= ('a', 'b' , 'c')
tpl=tuple(['a', 'b' , 'c'])


6 辞書


辞書もリストと同じように Python のプログラムで良く利用されます。
辞書は、他の言語で「連想配列」と呼ばれるもので、 key と value をペアで保持します。

辞書の特徴として、「key は変更できません」
value は変更できます。
また、辞書に新しい key の追加や、 key の削除もできます。(key を削除すると、値も削除されます)

関数
説明
辞書
(keyvalueデータ)
dict(data)

Python の key = value 型
key は変更できないば、value は変更できる。
辞書型は、登録順序を保持しない。
キーが重複している場合には、後から登録した値が有効になる。
同一キーを2つ登録することはできない。
dic={}
dic={ name : "kirikutitarou" }
dic=dict()
dic=dict(name="kirikutitarou")

key は、基本は文字列型ですが、value には、リストと同じようにいろいろな型を設定できます。

辞書の タプルとリストを別々のキーに設定した例です。

>>> b=(1,2,3,4,5)        # タプル
>>> c=['a','b','c']        # リスト
>>> dic = {'tpl' : b , 'lst' : c}    #辞書
>>> print (dic)
{'tpl': (1, 2, 3, 4, 5), 'lst': ['a', 'b', 'c']}


Python の辞書型はかなり柔軟にデータを設定できます。プログラミングで複雑なデータを扱う場合にもあまり悩まず、そのままpython で記述することができます。
辞書は、かなり便利なので、いろいろな使い方を習得すれば、Python のコーディング力がドーンと上がります!

辞書もメソッドがいろいろ用意されています。メソッドを使ってデータを取り出したり変更したり、削除できます。

よく使うメソッド
メソッド
説明
clear()
辞書の内容をすべて消去する
dic.clear()
copy()
辞書の内容をコピーする
d = dic.copy()
get(key)
辞書からkeyに対応する値を得る
value = dic.get("name")
items()
辞書から、key=value の一覧を得る
items = dic.items()
keys()
辞書からキー一覧を得る
keys = dic.keys()
pop(key)
辞書からkeyに対応する値を取り出す
(削除する)
value = dic.pop("name")
update(other_dict)
辞書を別の辞書で更新する。
同じキーがある場合には、other_dict の値で更新される。
同じキーがない場合には、other_dict のキーと値が追加される。
dict.update(other_dict)
values()
辞書から値のリストを取得する
lst = dic.values()


7 集合


集合演算を行えるデータ型です。
集合演算の処理は、Python でも簡単にプログラミングできますが、集合型を利用するとデータ量が多いと実行速度が速くなります。

大量のデータを集計したり分類したりする時にとても便利です。
データベースを利用できる環境での開発であれば、データベースを利用してしまいますが、速度が重要な場面では集合を試してみて下さい。
Python の集合はかなり大きなデータでも十分なパフォーマンスを持っています。

関数
説明
集合
set(data)
frozenset(data)

Pythonの集合型
和集合、積集合、差集合、部分集合などの集合演算ができる。
重複した値は登録しない(エラーにはならない)
float 1.00 と int 1 は重複した値として扱う。

frozenset() は変更できない集合を作成する
st={}
st={1.2.3.4.5 }
st=set()
st=set({1,2,3,4,5})


fzst = frozenset({1,2,3,4,5})

集合演算の例です。




積集合
>>> set_a = {1 , 2 , 3 , 4 , 5 , 6}
>>> set_b = {5 , 6 , 7 , 8 , 9 , 10}
>>> set_a.intersection(set_b)
{5, 6}
和集合
>>> set_a = (1 , 2 , 3 , 4 , 5 , 6)
>>> set_a = {1 , 2 , 3 , 4 , 5 , 6}
>>> set_a.union(set_b)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
差集合
>>> set_a = (1 , 2 , 3 , 4 , 5 , 6)
>>> set_a = {1 , 2 , 3 , 4 , 5 , 6}
>>> set_a.difference(set_b)
{1, 2, 3, 4}




集合でよく使うメソッド
メソッド
説明
add(elem)
集合にelem を追加する
st.add(10)
remove(elem)
集合にある elem を削除する。
elem がない場合、エラーになる
ret = st.remove(10)
discard(elem)
集合にある elem を削除する。
elem がない場合は何もしない
ret = st.discard(10)
pop()
集合の先頭の値を取得して削除する
ret = st.pop()
clear()
集合の要素をすべて削除する。
st.clear()
copy()
集合をコピーする。
nst = st.copy()
difference(other_set)
現在の集合とother_set の差集合を得る。
other_set は複数指定できる。
deff = st.difference(other_set)
intersection(other_set)
現在の集合とother_setの積集合を得る
inters = st.intersection(other_set)
union(other_set)
現在の集合と other_set の和集合を得る
uno = st.union(other_set)

簡単ですが、Python で利用する組み込みのデータ型についてまとめました。

Python では、この組み込みデータ型を基本として、クラスを利用していろいろなデータ型を拡張しています。

基本の型を押さえておけば応用もどんとこいです。



コメント

このブログの人気の投稿

Python のファイルアクセス

Lambda について

Visual Studio Code での Python 開発のポイント