「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。目下、データ分析・語学に力点を置いています。

MENU

Pythonをゆっくりていねいに学ぶ(その04/X)

 Pythonを真面目にゆっくり学ぶべく

を参考に学んでいきます*1

3. Pyの具:リスト、タプル、辞書、集合

3.3 タプル

 タプルは、リストと同様に、任意の要素を集めたシークエンスである。ただしイミュータブルである点がリストと相違する。

3.3.1 ()を用いたタプルの作成
####################
### タプルの定義 ###
####################

empty_tuple = ()
print(empty_tuple)

# 要素が1個のタプル:末尾にカンマ
one_marx = 'Groucho',
print(one_marx)

# 要素が複数のタプル:末尾にカンマ
marx_tuple = 'Groucho', 'Chico', 'Harpo',
print(marx_tuple)
marx_tuple = 'Groucho', 'Chico', 'Harpo' # 最後の要素のカンマは省略可
print(marx_tuple)

# タプルは()で囲むことも可能:この方が一目見てタプルと分かりやすい
marx_tuple = ('Groucho', 'Chico', 'Harpo')
print(marx_tuple)
3.3.2 タプルのアンパック

 タプルを用いると複数の変数に一発で値を定義できる。これをタプルのアンパックという。

##########################
### タプルのアンパック ###
##########################
marx_tuple = ('Groucho', 'Chico', 'Harpo')
a, b, c = marx_tuple

print(a)
print(b)
print(c)

pw1 = 'swordfish'
pw2 = 'tuna'
pw1, pw2 = pw2, pw1

print(pw1)
print(pw2)
3.3.3 タプルとリストの比較

 タプルはイミュータブルなために利便性が少ないように見える。ではタプルを使うメリットとは何か。

  • タプルは消費メモリが少ない
  • タプル要素を誤って書き換える危険性が無い
  • タプルは後述する辞書のキーに使える
  • 名前付きタプルはオブジェクトの代用品にできる
  • 関数の引数はタプルとして渡される

3.4 辞書

 辞書はリストに似ているものだが、個々の値に一意なキーを与え、キーで値を管理する。キーは文字列が良く使われるが、\mathrm{Python}のイミュータブル型であれば任意の値を用いることができる。辞書はミュータブルであるから、キー/値要素を追加、削除および変更することができる。

3.4.1 {}による作成

 辞書の作成はkey:valueというペアをカンマで区切って並べ、{}で囲む。

#######################
### 辞書型の作り方1 ###
#######################

empty_dict = {}
print(empty_dict)

# 
bierce = {"day": "A period of twenty-four hours, mostly misspent",
          "positive": "Mistaken at the top of one's voice",
          "misfortune": "The kind of fortune that never misses"
         }
print(bierce)
print(bierce['day'])
3.4.2 dict()
#######################
### 辞書型の作り方2 ###
#######################

lol = [['a','b'],['c','d'],['e','f']]

lol = dict(lol)

print(lol['a'])


 値の追加は以下のようにする:

################
### 新規追加 ###
################

pythons = {'chapman': 'Graham',
           'Cleese': 'John',
           'Idle': 'Eric',
           'Jones': 'Terry',
           'Palin': 'Michael'
          }

print(pythons)

# 新規追加
pythons['Giliam'] = 'Gerry'

print(pythons)

# 辞書キーは一意でなければならない
pythons['Giliam'] = 'John'

print(pythons) # 既存のキーの値を置き換えるのみになる
3.4.3 update()による辞書の結合
### update()でコピー
pythons = {'chapman': 'Graham',
           'Cleese': 'John',
           'Idle': 'Eric',
           'Jones': 'Terry',
           'Palin': 'Michael'
          }

print(pythons)

pythons2 = {}

pythons.update(pythons2)

print(pythons2)
3.4.4 要素の削除
######################
### 特定キーを削除 ###
######################
pythons = {'chapman': 'Graham',
           'Cleese': 'John',
           'Idle': 'Eric',
           'Jones': 'Terry',
           'Palin': 'Michael'
          }

print(pythons)

del pythons['Palin']

print(pythons)

##########################
### すべてのキーを削除 ###
##########################

pythons.clear()
print(pythons)
3.4.5 キーの有無管理
######################
### 特定キーを検索 ###
######################
pythons = {'chapman': 'Graham',
           'Cleese': 'John',
           'Idle': 'Eric',
           'Jones': 'Terry',
           'Palin': 'Michael'
          }


print('Palin' in pythons) # 辞書のキーに特定の値があるか否か


print(pythons.get('Palin')) # 辞書のキーに特定の値があれば対応値を返し、
print(pythons.get('Paul', 'Not exists in the dictionary.')) # 無ければ指定したオプション値を変える

print(pythons.keys()) # すべてのキーを取得
3.4.6 値の取得
####################
### 代入とcopy() ###
####################

signals = {'green':'go', 'yellow': 'faster', 'red':'smile for camera'}
save_signals = signals

signals['blue'] = 'confuse everyone'
print(save_signals) # = で結ぶと=の左辺が変わると右辺も変わる

# copy()すればこれは避けられる

signals = {'green':'go', 'yellow': 'faster', 'red':'smile for camera'}
save_signals = signals.copy()

signals['blue'] = 'confuse everyone'
print(save_signals)

*1:第2版が出ているものの初版しか持っていないのでこちらで。

プライバシーポリシー お問い合わせ