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 では、この組み込みデータ型を基本として、クラスを利用していろいろなデータ型を拡張しています。
基本の型を押さえておけば応用もどんとこいです。

コメント
コメントを投稿