辞書_1(Python_11)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回は、集合の使い道について学びました。集合を使えばデータの処理方法が広がります。

今回は、辞書について学んでいきたいと思います。

辞書

辞書とは、Pythonが標準でサポートしているオブジェクトの1つです。ただし、今までご紹介したオブジェクト(リスト、タプル、集合)とは、ちょっと毛色が違います。辞書とは、キーで管理するデータの集合です。以下のように記述します。

{キー1:値1, キー2:値2, …}

キーには数値や文字列、タプルなどイミュータブルなデータ型で指定します。値には任意のデータ型のオブジェクトをセットできます。

辞書はシーケンス

辞書はシーケンスなオブジェクトです。個々の値を参照するには、キーを使って指定します。また、辞書はミュータブルなオブジェクトです。キーで指定した値を修正できます。

d_1 = {'A':1,'B':2,'C':3}
print(d_1['B']) # 2を返す
d_1['C'] = 5
print(d_1) # {'A': 1, 'B': 2, 'C': 5}を返す

逆に値を使ってキーを指定することはできません。

キーには重複して指定してはいけません。重複して指定をした場合、参照できない値が発生します。また、存在しないキーを指定するとエラーになります。

d_1 = {'A':1,'A':2,'C':3}
print(d_1['A']) # 2を返す(1は参照できない)
print(d_1['D']) # エラーとなる

辞書はイテラブル

また、辞書はイテラブルなオブジェクトです。for文を使ってキーを順番に取り出せます。(d_1をd_1.keys()としても同じです。)

d_1 = {'A':1,'B':2,'C':3,'D':4}
for key in d_1:
    print(key, end=' ')
# A B C D と表示する

for文を使って値を順番に取り出すには、valuesメソッドを使用します。

d_1 = {'A':1,'B':2,'C':3,'D':4}
for val in d_1.values():
    print(val, end=' ')
# 1 2 3 4 と表示する

また、キーと値の両方を順番に取り出すには、itemsメソッドを使用します。

d_1 = {'A':1,'B':2,'C':3,'D':4}
for key,val in d_1.items():
    print(key, end=':')
    print(val, end=' ')
# A:1 B:2 C:3 D:4 と表示する

なお、Python3.7以降では辞書内のキーの順番が保証されるようになりました。

キーの有無の確認

キーの有無の確認は、in演算子、not in演算子を使います。

print('A' in {'A':1,'B':2,'C':3} ) # Trueを返す
print('D' in {'A':1,'B':2,'C':3} ) # Falseを返す
print('A' not in {'A':1,'B':2,'C':3} ) # Falseを返す
print('D' not in {'A':1,'B':2,'C':3} ) # Trueを返す

要素の追加

キーを使って辞書の値を修正できることは、すでに述べました。この時辞書の中に存在しないキーを使用すると、該当するキーと値を辞書に追加できます。

d_1 = {'A':1,'B':2,'C':3}
d_1['D'] = 5
print(d_1) # {'A': 1, 'B': 2, 'C': 3, 'D': 5}を返す

逆に言うと辞書にデータを追加する場合、辞書内にキーが存在していないことを、not in演算子などで事前確認しなければなりません。間違って存在するキーを指定すると、該当する値を上書きしてしまいます。

また、updateメソッドを使うと別の辞書の内容を追加できます。

d_1 = {'A': 1, 'B': 2}
d_1.update({'C': 3, 'D': 4})

print(d_1) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}を返す

この場合も追加する辞書に重複するキーがあると、追加する辞書の値に書き換えられてしまいます。 また、累算代入演算子「|=」も使用可能です(Python3.9以降)。

d_1 = {'A': 1, 'B': 2}
d_1 |= {'C': 3, 'D': 4}

print(d_1) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}を返す

要素の削除

辞書の要素を削除するには、del文を使って削除する要素のキーを指定します。

d_1 = {'A':1,'B':2,'C':3}
del d_1['B']
print(d_1) # {'A': 1, 'C': 3}を返す

また、popメソッドを使って削除する要素のキーを指定すると、対象の値を返すと同時に要素を削除します。

d_1 = {'A':1,'B':2,'C':3}
print(d_1.pop('B')) # 2を返す
print(d_1) # {'A': 1, 'C': 3}を返す

要素を削除する際に、辞書内に指定したキーが存在していないとエラーとなります。実行前にin演算子などで事前確認しなければなりません。

次回も辞書

いかがでしょうか。辞書はリスト、タプルとは少し違った特徴がありますね。次回も辞書です。使いどころを考えてみようと思います。お楽しみに!!

hirocom777.hatenadiary.org

Python再学習のまとめはこちら!!

Pythonまとめ

Python関連記事のまとめです

集合_2(Python_10)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回は、集合について学びました。工夫すると色々使えるところがありそうです。

今回は、集合の使い道について学んでいきたいと思います。

集合の使い道

「値の重複を許さない」、「順番は保証されない」等の特徴を持つ集合ですが、どのような場面で使われるのでしょうか。

集合の計算を使う

前回ご紹介した集合の計算を、直接使用する方法です。2つの集合を使用すれば、要素がどの集合に所属するか状況が簡単にわかります。

# 出力結果の順番は保証されません
部署_1 = {'A','B','C'}
部署_2 = {'C','D','E'}
# 部署_1または、部署_2に所属するメンバー
print(部署_1 | 部署_2) # {'B', 'C', 'A', 'E', 'D'}
# 部署_1、部署_2どちらかに所属するメンバー
print(部署_1 ^ 部署_2) # {'B', 'E', 'A', 'D'}
# 部署_1、部署_2両方に所属するメンバー
print(部署_1 & 部署_2) # {'C'}
# 部署_1、のみに所属するメンバー
print(部署_1 -部署_2) # {'A', 'B'}

重複要素の削除

集合は中の要素には重複した値を設定できません。重複した値を持つリストを集合型変換すると、重複した値は削除されます。これをリストに再変換すれば、一意の値のみを持つリストを作成できます。ただし、順番は保証されません。

l_1 = [1,2,3,1]
l_1 = list(set(l_1))
print(l_1) # [1, 2, 3]を返す(順番は保証されない)

オブジェクトの比較

集合を使うとリスト、タプルを違う形で比較できます。

リスト、タプルの比較

今まで触れてきませんでしたが、リストやタプルなどのオブジェクトも比較演算子で判定できます。

  • 等しい、等しくない(==、!=)
    リスト(タプル)内のすべての要素が一致すれば等しい、そうでなければ等しくないと判定されます。異なる型のオブジェクトとは比較できません(エラーになる)。
  print((1,2,3) == (1,2,3)) # Trueを返す
  print((1,2,3) == (2,1,3)) # Falseを返す
  print((1,2,3) != (2,1,3)) # Trueを返す
  • 大小(<、>)
    それぞれの先頭の要素から順に比較され、最初の等価でない要素の比較結果が反映されます。
  print((1,2,3) < (1,3,2)) # Trueを返す
  print((1,2,3) < (1,3)) # Falseを返す
  print((1,2,3) < (1,2)) # Falseを返す

対応する要素がない場合には、要素数が少ないほうが小さいものと判定されます。

集合の比較

それでは集合の場合はどうなるのでしょうか。集合どうしで包含関係(片方の集合が、もう片方の集合に含まれているか)の結果で判定します。

  • 等しい、等しくない
    片方の集合のすべての要素がもう片方内に存在し、双方の要素数が等しい場合は等しくなります。これ以外は等しくないと判定されます。
  print({2,1,3} == {1,2,3}) # Trueを返す
  print({2,1,3} == {1,2,5}) # Falseを返す
  print({2,1,3} != {1,2,5}) # Trueを返す
  • 大小 片方の集合のすべての要素がもう片方内に存在し、さらにもう片方には別の要素がある場合、そちらの集合が大きいと判定されます。
  print({2,3} < {1,2,3}) # Trueを返す
  print({2,1} < {1,5}) # Falseを返す

双方の集合に、共有していない要素が存在する場合はどうなるのでしょうか。この場合は、大小の関係はなく等しくないという状態になります。

  print({1,2,3} < {1,2,5}) # Falseを返す
  print({1,2,3} > {1,2,5}) # Falseを返す
  print({1,2,3} != {1,2,5}) # Trueを返す

この様に集合の比較判定は、リストやタプルと異なります。つまりリストやタプルを集合に型変換すると、異なるルールでの比較判定ができます。

この機能を使うと、リストに必要なデータが入っているか、または不要なデータが入っていなてか確認するコードをシンプルに記述する、などが考えられます。

frozenset

集合とは別にfrozenset型というデータ型があります。frozenset型はイミュータブルな集合で、変更ができません。

次回は辞書

いかがでしょうか。集合を使えばデータの処理方法が広がります。次回は辞書です。今までのオブジェクトとは、ちょっと違いがあります。お楽しみに!!

hirocom777.hatenadiary.org

Python再学習のまとめはこちら!!

集合_1(Python_09)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回までで、リストについて学びました。学ぶことが結構ありますね!!

今回は集合について学んでいきたいと思います。

集合とは

集合とは、Pythonが標準でサポートしているオブジェクトの1つです。タプルは複数の値をまとめて管理できます。以下のように記述します。

{値1, 値2, …}

それぞれの値はイミュータブルなデータ型のオブジェクトをセットできます。また、集合の中の要素には重複した値を設定できません。ここがリストやタプルと違う点です。重複した値を設定しようとすると、その値は無視されてしまいます。そして、集合内の順番は保証されません

s_1 = {1,2,3,1}
print(s_1) # {1, 2, 3}を返す(順番は保証されない)

また、集合はシーケンスではありません。インデックスを使って参照することはできません。スライスもできません。

集合はイテラブルです。for文を使って要素を取り出せます。

for char in {'A','B','C','D'}:
    print(char, end=' ')
# A B C D と表示する(順番は保証されない)

ただし、取り出される順番は保証されません

要素の有無の確認は、in演算子、not in演算子を使います。

print('A' in {'A','B','C'}) # Trueを返す
print('E' in {'A','B','C'}) # Falseを返す
print('A' not in {'A','B','C'}) # Falseを返す
print('E' not in {'A','B','C'}) # Trueを返す

集合どうしの連結はできません。list関数でリスト型に型変換して結合した後に、set関数で集合型に型変換しなおす必要があります。

s_1 = {'A','B'}
s_2 = {'C','D'}

print(set(list(s_1)+list(s_2))) # {'A', 'B', 'D', 'C'}を返す(順番は保証されない)

print(s_1 + s_2) # エラーとなる

集合の修正

集合に値を追加するにはaddメソッドを使用します。

s_1 = {'A','B','C'}
s_1.add('D')
print(s_1) # {'C', 'A', 'B', 'D'}を返す(順番は保証されない)

集合にはappend、insertなどのメソッドがありません。順番が保証されないので、最後に追加、場所を指定して挿入などの修正はできません。

また、集合ではインデックスを使えないのでインデックスを指定した値の削除はできません。removeメソッドを使って、値を指定して削除します。

s_1 =  {'A','B','C','D'}
s_1.remove('C')
print(s_1) # {'A', 'B', 'D'}を返す(順番は保証されない)

集合の計算

集合どうしで集合の計算ができます。以下の集合があったとします。

s_1 = {'A','B','C'}
s_2 = {'C','D','E'}
  • 和集合
    2つの集合の要素をすべて持った集合を返します。
  print(s_1 | s_2) # {'B', 'A', 'D', 'E', 'C'}を返す(順番は保証されない)

unionメソッドでも同じ結果を取得できます。

  print(s_1.union(s_2))
  • 積集合 2つの集合ともに持っている要素を持った集合を返します。
  print(s_1 & s_2) # {'C'}を返す(順番は保証されない)

intersectionメソッドでも同じ結果を取得できます。

  print(s_1.intersection(s_2))
  • 差集合 1つ目の集合から2つ目の集合の要素を削除した集合を返します。
  print(s_1 - s_2) # {'B', 'A'}を返す(順番は保証されない)

differenceメソッドでも同じ結果を取得できます。

  print(s_1.difference(s_2))
  • 排他的論理和集合 2つの集合の要素のうち、どちらか片方が持っている要素を持った集合を返します。
  print(s_1 ^ s_2) # {'A', 'B', 'D', 'E'}を返す(順番は保証されない)

symmetric_differenceメソッドでも同じ結果を取得できます。

  print(s_1.symmetric_difference(s_2))

集合内包表記

集合には内包表記があります。以下のように記述します。

{式 for 変数 in イテラブル if 条件式}

作成された要素の内容はリスト内包表記と同じですが、重複した内容は削除されます。また、順番は保証されません。

次回も集合

いかがでしょうか。集合は、工夫すると色々使えるところがありそうです。次回は集合の使い道について考えてみます。お楽しみに!!

hirocom777.hatenadiary.org Python再学習のまとめはこちら!!

タプル(Python_08)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回までで、リストについて学びました。学ぶことが結構ありますね!!

今回もリストについて学んでいきたいと思います。 今回はタプルです。一見リストと同じように見えるのですが、何が違うのでしょうか。

タプル

タプルとは、Pythonが標準でサポートしているオブジェクトの1つです。タプルは複数の値をまとめて管理できます。以下のように記述します。

(値1, 値2, …)

ですが値が1つだけの場合、以下のように記述します。

(値1,)

それぞれの値は任意のデータ型のオブジェクトをセットできます。また、()は省略できます(コードがわかりずらくなるので、余り省略しないほうが良いです)。

タプルとリストは非常に似ているのですが、1つ大きな違いがあります。タプルは内容を修正できません。タプルはイミュータブルなオブジェクトなのです。

タプルはシーケンスなオブジェクトです。リストと同様にインデックスを使って値を参照できます。しかし修正はできません。イミュータブルだからです。

t_1 = ('A','B','C','D')

print(t_1[0]) # 'A'を返す
print(t_1[1]) # 'B'を返す
print(t_1[-1]) # 'D'を返す

t_1[1] = 'X' #エラーとなる

スライスで一部を切り出すこともできます。切り出した結果はタプル型のオブジェクトになります。

t_1 = ('A','B','C','D')

print(t_1[1:3]) # ('B', 'C')を返す

タプルはイテラブルなオブジェクトです。for文を使って要素を順番に取り出せます。

for char in ('A','B','C','D'):
    print(char, end=' ')
# A B C D と表示する

タプルどうしは、算術演算子の「+」を使って連結ができます。

t_1 = ('A','B')
t_2 = ('C','D')

print(t_1 + t_2) #('A','B','C','D')を返す

タプル以外を結合したいのであれば、tuple関数でタプル型に型変換(キャスト)する必要があります。

print(('A','B','C') + tuple('D')) #('A','B','C','D')を返す
print(('A','B','C') + 'D') #エラーとなる

要素の有無の確認も同じで、in演算子、not in演算子を使います。

print('A' in ('A','B','C')) # Trueを返す
print('E' in ('A','B','C')) # Falseを返す
print('A' not in ('A','B','C')) # Falseを返す
print('E' not in ('A','B','C')) # Trueを返す

イミュータブルなので、リストの様にappend、insert、popなどのメソッドは使えません。要素数を取得するにはlen関数を使用します。

print(len(['A','B','C'])) # 3を返す

また、リスト内包表記のような作成方法(タプル内包表記?)は存在しません。必要な場合はリスト内包表記でリストを作った後、tuple関数でタプル型に変換して作成しましょう。

この様に、タプルはリストとほとんど同じです。

なぜタプルとリストがあるのか

それではなぜタプルとリストがあるのでしょうか。以下を参考にしてみました。

docs.python.org

これによると、リストは他の言語(C,JavaScript,VB)の配列のような使い方、タプルは構造体(C,JavaScript)ユーザー定義型(VB)のような使い方をイメージしているようです。リストは可変量のデータ、タプルは関連するデータグループを扱う感じですかね。

あと、変更を許したくない場合はタプルが良いですね。

タプル内のリストは変更できる

以上のようにタプル自体は修正することができないのですが、タプル内にリスト(等のミュータブルなオブジェクト)の要素については修正可能です。

t_1 = ('A',['B','C'],'D')

t_1[1][0] ='X'
print(t_1) # ('A', ['X', 'C'], 'D')を返す

ここは注意が必要ですね。

次回は集合

いかがでしょうか。リストとタプル、違いと使い道をしっかり把握しておきたいところです。次回は同じくオブジェクトの一種、集合です。どうやって使うのでしょうか。

hirocom777.hatenadiary.org Python再学習のまとめはこちら!!

リスト_2(Python_07)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回は、リストについて学びました。リストは複数の値をまとめて管理できます。

今回もリストについて学んでいきたいと思います。

要素の追加

リストにデータを追加する場合は、リストオブジェクトのappendメソッドを使います。appendメソッドは指定したオブジェクトをリストに追加します。 リストのインデックスを指定すると、指定されたインデックスの要素を返すと同時にリストから削除します。

l_1 = ['A','B','C']
l_1.append('D')
print(l_1) # ['A', 'B', 'C', 'D']を返す

これは、前回ご紹介したリスト同士の結合とは作用が少し異なります。結合の場合には新しいオブジェクトを作成することになりますが、appendメソッドでは既存のオブジェクトの修正となります。

オブジェクトが新規に作成されているのか、修正されているのかはid関数でわかります。Pythonでは、すべてのオブジェクトに「オブジェクトID」と呼ばれる一意の識別子が割り当てられます。id関数を使用するとオブジェクトに割り当てられたオブジェクトIDが取得できます。

appendメソッドでデータを追加してみましょう。

l_1 = ['A','B','C']
print(id(l_1)) # 2714695515200(環境により異なる)を返す
l_1.append('D')
print(id(l_1)) # 2714695515200(同じID)を返す

この様にデータ追加後もオブジェクトIDは変わりません。オブジェクト自体を修正できています。累算代入演算子「+=」を使っても、同じことが可能です。

l_1 = ['A','B','C']
print(id(l_1)) # 2714695515200(環境により異なる)を返す
l_1 += ['D']
print(id(l_1)) # 2714695515200(同じID)を返す

つづいて、リスト同士を結合してみます。

l_1 = ['A','B','C']
print(id(l_1)) # 1787313004736(環境により異なる)を返す
l_1 = l_1 + ['D']
print(id(l_1)) # 1787313591616(上と異なるID)を返す 

データを追加した、新しいオブジェクトが作成されたことがわかります。この様に、リストオブジェクトは内容を修正できます。これをミュータブルなオブジェクトと呼びます。文字列型はこの様な修正ができません。これをイミュータブルなオブジェクトと呼びます。

また、リストの最後に追加するのではなく任意の場所に追加したい場合は、insertメソッドを使います。以下のように記述します。

リスト.insert(挿入位置,挿入する値)

挿入位置には挿入したいリストのインデックス位置を指定します。0にすると、リストの先頭にデータを挿入します。

l_1 = ['A','B','C']
l_1.insert(1,'X')
print(l_1) # ['A', 'X', 'B', 'C']を返す

こちらもリストオブジェクトの修正となります。

要素の削除

リストの要素を削除する場合は、del文を使って削除するインデックスを指定します。スライスを使って複数の要素を削除することもできます。

l_1 = ['A','B','C','D','E']
del l_1[0]
print(l_1) # ['B', 'C', 'D', 'E']を返す
del l_1[1:3]
print(l_1) # ['B', 'E']を返す

popメソッドを使っても削除できます。popメソッドでリストのインデックスを指定すると、指定されたインデックスの要素を返すと同時にリストから削除します。

l_1 = ['A','B','C']
print(l_1.pop(1)) # Bを返す
print(l_1) # ['A', 'C']を返す

これもリストオブジェクトの修正です。

素数の取得

リストの要素数を取得するには、len関数を使います。

print(len(['A','B','C'])) # 3を返す

len関数は文字列型など、他のオブジェクトでも使用できる物があります。

リスト内包表記

決まったの規則の値を持つリストを作成する方法として、リスト内包表記があります。1~10を要素として持つリストは、for文を使用すると作成できます。

l_1 = []
for i in range(1,11):
    l_1.append(i)

print(l_1) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

これをリスト内包表記を使って以下の様に記述されます。

l_1 = [i for i in range(1,11)]

print(l_1) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

リスト内包表記は以下のように記述します。

[式 for 変数 in イテラブル if 条件式]

最後のif文を記述すると、条件式が成立したときだけリストに要素を追加します。上の出力を奇数だけにしたい場合は、以下のように記述します。

l_1 = [i for i in range(1,11) if i%2]

print(l_1) # [1, 3, 5, 7, 9]

式に三項演算子というものを使用する方法もあるのですが、これは別途ご紹介したいと思います。

次回はタプル

いかがでしょうか。リストの扱いはPythonの基本でもあると思います。しっかりマスターしたいと思います。次回はタプルを学ぼうと思います。お楽しみに!!

hirocom777.hatenadiary.org Python再学習のまとめはこちら!!

リスト_1(Python_06)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回は、反復処理について学びました。条件を満たす間、同じ処理を繰り返し実行する処理です。

今回はリストについて学んでいきたいと思います。

リストとは

リストとは、Pythonが標準でサポートしているオブジェクトの1つです。Pythonではデータのことを「オブジェクト」と呼ぶんでしたね。リストは複数の値をまとめて管理できます。以下のように記述します。

[値1, 値2, …]

それぞれの値は任意のデータ型のオブジェクトをセットできます。リストはシーケンスなオブジェクトです。文字列型と同じようにインデックスを使って個々の要素を参照、修正できます。

l_1 = ['A','B','C','D']

print(l_1[0]) # 'A'を返す
print(l_1[1]) # 'B'を返す
print(l_1[-1]) # 'D'を返す

l_1[0] = 'X'
print(l_1) # ['A', 'X', 'C', 'D']を返す

また、スライスで一部を切り出すこともできます。切り出した結果はリスト型のオブジェクトになります。

l_1 = ['A','B','C','D']

print(l_1[1:3]) # ['B', 'C']を返す

また、リストはイテラブルなオブジェクトです。for文を使って要素を順番に取り出せます。

for char in ['A','B','C','D']:
    print(char, end=' ')
# A B C D と表示する

リストどうしは、算術演算子の「+」を使って連結ができます。これも文字列型と同じですね。

l_1 = ['A','B']
l_2 = ['C','D']

print(l_1 + l_2) #['A','B','C','D']を返す

リスト以外を結合したいのであれば、list関数で文字列型に型変換(キャスト)する必要があります。

print(['A','B','C'] + list('D')) #['A','B','C','D']を返す
print(['A','B','C'] + 'D') #エラーとなる

要素の有無の確認も文字列と同じで、in演算子、not in演算子を使います。

print('A' in ['A','B','C'] ) # Trueを返す
print('E' in ['A','B','C'] ) # Falseを返す
print('A' not in ['A','B','C'] ) # Falseを返す
print('E' not in ['A','B','C'] ) # Trueを返す

2次元リスト

前述の通り、リストには任意のデータ型のオブジェクトをセットできます。つまり、リスト型のオブジェクトをセットすることも可能です。リストを要素としたリストを2次元リストと呼びます。

2次元リストでリスト内リストを参照するには、インデックスを使用して指定します。リスト内リストの要素を指定するには、インデックスで指定したリスト内リストに、さらにインデックスを付けて指定します。

lists = [[10, 30, 20, 40], [11, 31, 21], [12]]
print(lists[0]) # [10, 30, 20, 40]を返す
print(lists[1][2]) # 21を返す

for文を2重にネストすれば、2次元リスト内の各要素についても参照できます。

for row in [[10, 20], [11, 31, 21], [12]]:
    for val in row:
        print(val,end=' ')
# 10 20 11 31 21 12 を表示する

2次元リストは、データベースのテーブルを扱ったりする際にも使えますね。3次元以上のリストも作成できるのですが、複雑になりすぎるのでおススメはしません。

配列

この様に、Pythonではまとまったデータを扱う場合にリストを使うことが多いです。しかし他のプログラム言語では、配列というものを使うことが多いです。どうしてPythonではリストを使うのでしょうか?

実をいうとPythonにも配列というものがあるのですが、少しばかりニュアンスが違うのです。Pythonで配列を使う場合には専用のモジュールをインポートする必要があります。使い方はリストとほぼ同じなのですが、以下の違いがあります。

  • 異なるデータ型を一緒にできない
    リストでは、異なるデータ型の要素がリスト内に混在できたのですが、配列では同じデータ型のみ設定できます。最初に配列を定義する際にデータ型を指定します。

  • 多次元には使用できない
    リストの様に多次元での使用はできません。

データ型が決まっているのでリストよりも処理は速いようです。でも多次元で使えない、インポートが必要など使い勝手は今1つですね。普段はリストで十分のようです。

次回もリスト

いかがでしょうか。リストをうまく使えるようになることがPythonを使いこなすコツの1つなのかも知れません。次回も引き続きリストを学んでいこうと思います。お楽しみに!!

hirocom777.hatenadiary.org

Python再学習のまとめはこちら!!