# サイズ3のtuple
(1, 2, 3)
(1, 2, 3)
# 空のtuple
()
()
# tupleを作る
a = ('this', 'is', 'tuple')
# 任意のPythonオブジェクトが要素となれる
(1, 'string', a)
(1, 'string', ('this', 'is', 'tuple'))
# 最初の要素にアクセス
a[0]
'this'
# try-exceptはエラーを出さないための処理なので無視してよい
try:
# 代入(値の更新)はできない
a[0] = 'that'
except Exception as e:
import traceback
print(traceback.format_exc())
Traceback (most recent call last): File "/var/folders/91/5lnzpx8103j7phv4v4wyn89w0000gn/T/ipykernel_43287/2664072323.py", line 4, in <module> a[0] = 'that' TypeError: 'tuple' object does not support item assignment
# 関数の返値がtuple
def test_tuple(a, b):
return a+b, a-b
# 関数の返値を確認
test_tuple(1, 2)
(3, -1)
# 返値はサイズ2のtupleなので,それぞれを別の変数に代入
c, d = test_tuple(20, 10)
c
30
d
10
# 空のlist
[]
[]
# listも任意のPythonオブジェクトを要素とする
a = ['this', 'is', 'list']
[1, 'string', a]
[1, 'string', ['this', 'is', 'list']]
# 最初の要素にアクセス
a[0]
'this'
# listは値の書き換えが可能
a[0] = 'that'
a
['that', 'is', 'list']
# appendで要素を追加
a = [1, 2, 3]
a.append(4)
a
[1, 2, 3, 4]
# insertで要素を挿入
a.insert(1, 100)
a
[1, 100, 2, 3, 4]
# removeで要素を削除
a.remove(100)
a
[1, 2, 3, 4]
# 最後の要素を返す
a.pop()
4
# popによってサイズが縮小
a
[1, 2, 3]
# extendで別のlistの全ての要素を追加
a.extend([10, 11, 12])
a
[1, 2, 3, 10, 11, 12]
# 空にする
a.clear()
a
[]
# tupleをlistに変換
list((3, 4, 5))
[3, 4, 5]
# 0で初期化されたサイズ10のlist
[0]*10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 内包表記でlistを生成
[i**2 for i in range(5)]
[0, 1, 4, 9, 16]
# listに変換
list(range(5))
[0, 1, 2, 3, 4]
# tupleに変換
tuple(range(5))
(0, 1, 2, 3, 4)
# 陽にキーと値のペアを与えてdictを生成
a = {'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3'}
a
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
# これでも同じ
b = dict(key1='value1', key2='value2', key3='value3')
b
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
# キーを指定して値にアクセス
a['key3']
'value3'
# キーを指定して値を更新
a['key1'] = 'hoge'
a
{'key1': 'hoge', 'key2': 'value2', 'key3': 'value3'}
# 存在しないキーを指定すると新たなキーと値を追加
a['key0'] = 'value0'
a
{'key1': 'hoge', 'key2': 'value2', 'key3': 'value3', 'key0': 'value0'}
# キーと値を削除
del a['key1']
a
{'key2': 'value2', 'key3': 'value3', 'key0': 'value0'}
# try-exceptはエラーを出さないための処理なので無視してよい
try:
# 存在しないキーを指定するとエラー
a['key1']
except Exception as e:
import traceback
print(traceback.format_exc())
Traceback (most recent call last): File "/var/folders/91/5lnzpx8103j7phv4v4wyn89w0000gn/T/ipykernel_43287/3302125977.py", line 4, in <module> a['key1'] KeyError: 'key1'
# 'key1' が存在するかチェック
'key1' in a
False
# 'key2' が存在するかチェック
'key2' in a
True
# 'key1'にアクセス.存在しない場合は'hoge'を返す
a.get('key1', 'hoge')
'hoge'
# 'key2'にアクセス.存在しない場合は'hoge'を返す
a.get('key2', 'hoge')
'value2'
# キー
a.keys()
dict_keys(['key2', 'key3', 'key0'])
# 値
a.values()
dict_values(['value2', 'value3', 'value0'])
# キーと値のペア
a.items()
dict_items([('key2', 'value2'), ('key3', 'value3'), ('key0', 'value0')])
# dictの全ての要素に対する処理
for key, val in a.items():
print("key = {:5s} : value = {:5s}".format(key, val))
key = key2 : value = value2 key = key3 : value = value3 key = key0 : value = value0
# 同様に全てのキーに対する処理
for key in a.keys():
print(key)
key2 key3 key0
# .keys()で返されるオブジェクトをlistに変換
keys = list(a.keys())
keys
['key2', 'key3', 'key0']
# listをソート
keys.sort()
keys
['key0', 'key2', 'key3']
# ソートしたキーで順にアクセスする
for key in keys:
print("key = {:5s} : value = {:5s}".format(key, a[key]))
key = key0 : value = value0 key = key2 : value = value2 key = key3 : value = value3