リスト
リストとは複数の値を1つの変数名に代入し、それをうまく呼び出す仕組みです。
このような変数の型をリスト型いい、値のことを要素といいます。
test_listという変数名に10と20と30の複数の値を含ませることができます。
変数名=[値1,値2,値3,…]と複数の値を指定してコンマで区切り、一部取り出すときは変数名[番号]とします。
この番号は0からはじまります。そのため、0が値で、1が値2になります。
番号のことをインデックス(添え字)といいます。
print(test_list[0])
print(test_list[1])
print(test_list[2])
インデックスに0を指定した場合に「10」をインデックスに1を指定した場合に「20」をインデックスに2を指定した場合に「30」を表示します。
通常、変数には1つの型の値しか代入できませんが、リスト型では異なる型の要素を代入できます。
実世界の例として変数名にカレー添え物として、福神漬けとらっきょうを含みたいときに利用します。
変数名=[値1,値2,値3,…]と複数の値を指定して、一部取り出すときは変数名[番号]とします。
この番号は0からはじまります。そのため、0が値1になり、1が値2になります。
では実際に以下のコマンドを入力して実行してみてください。
print(カレー添え物[0])
print(カレー添え物[1])
インデックスに0を指定した場合に「福神漬け」をインデックスに1を指定した場合に「らっきょう」を表示します。
リストの値を変更する場合は、変数名[変更したい番号]=値とします。
では変数名「test_list」の値を変更します。
では実際に以下を入力して実行してみてください。
print(test_list[1])
test_list[1]=40
print(test_list[1])
print(test_list)
インデックスが1の値が、「20」から「40」に変更されていることが確認できます。
インデックスは後ろからも指定が行えて、その場合は「-1」が最後の要素で「-2」が最後から2番目の要素です。
リストでは、リストの中にリストを格納するような入れ子構造も可能です。
タプル
タプルとはリストと同じなのですが、要素(値)を変更することができないのが違いです。
変数名=(値1,値2,値3,…)と複数の値を指定して、一部取り出すときは変数名[番号]とします。
リストと同じくこの番号は0からはじまります。そのため、0が値1になり、1が値2になります。
リストの時は[]で値を指定し、タプルは()で指定しましたが取り出すときはどちらも変数名[番号]になることに注意してください。
では実際に以下を入力して実行してみてください。
test_tuple[2]
リストと同じようにインデックスが2の「100」が表示されます。
実際にコードを追加して値が更新されないことを確認します。
では実際に以下を入力して実行してみてください。
test_tuple[1]=100
以下のエラーが表示されます。
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-11-dec830a3ec31> in <module>
1 test_tuple=(1,10,100)
----> 2 test_tuple[1]=100
TypeError: 'tuple' object does not support item assignment
スライス
リストやタプルは、範囲を指定して複数の要素を取り出すことが可能です。
そのように範囲を指定して値を部分的に取り出すことをスライスといいます。
開始位置と終了位置を指定して値を取り出せます。
リストをlist_test[始点:終点]で取り出すことができます。
test_list[2:4]とするとindexが2~4番目を取得します。
test_list[4:]とするとindexが4以降のものすべてを取得します。
test_list[:4]とするとindexが0~3までのものすべてを取得します。
では実際に以下を入力して実行してみてください。
print(test_list[2: 4])
print(test_list[4:])
print(test_list[:4])
test_list[2: 4]とすれば、[2, 3]が表示されます。
print(test_list[4:])とすれば、[4, 5, 6, 7, 8, 9]が表示されます。
print(test_list[:4])とすれば、[0, 1, 2, 3]が表示されます。
スライスは、インデックスの先頭が0で、始点に指定されたインデックスと終点で指定したインデックスの1つ前の要素が含まれます。
また、後ろからの指定も同じです。
集合型
集合型もリストに似ているのですが、重複した値を持たせることができないのが違いです。
数学的な演算(結合・交差・差分・対象差など)が行えますが、一部の取り出しができません。
変数名={値1,値2,値3,…}と複数の値を指定(またはset())して、値があるかの確認に値 in 変数名とします。
では実際に以下を入力して実行してみてください。
citrus={'Orange','grapefruit'}
print(fruit)
print('Orange' in fruit)
print(fruit&citrus)
print(fruit-citrus)
「'Orange' in fruit」で集合型「fruit」に「orange」が含まれているかを確認して含まれているので「True」を表示します。
「fruit&citrus」は、2つの集合に含まれている「{'grapefruit', 'Orange'}」を表示します。
「fruit-citrus」は、「fruit」から「citrus」を差し引いた「{'banana', 'Apple'}」を表示します。
辞書型
辞書型もリストと似ていて複数の値を一つの変数名で管理できます。
リスト型との違いとしてはリストが番号で値を取り出すのに辞書型はキーワード(key)で値を取り出します。
辞書型は、キー(key) と バリュー(値) で管理しますのでこれをキーバリュー型といいます。
変数名={キーワード1:値1,キーワード2:値2,キーワード3:値3,…}と指定してコンマで区切り、変数名[キーワードx]として取り出せます。
また、値 in 変数名として確認できます。
では実際に以下を入力して実行してみてください。
print(fruit_price['Apple'])
print('Orange' in fruit_price)
「100」と「True」の2行が表示されます。
また、keysメソッドを利用することで、キーワード(key)のみを列挙することも可能です。
sorted関数を利用してソートしたり、list関数を利用してリスト表示することも可能です。
では実際にコードを追加して以下を入力して実行してみてください。
print(list(fruit_price.keys()))
print(sorted(fruit_price.keys()))
以下3行が表示されます。
keyのみが表示されてソートやリスト表示が行えます。
dict_keys(['Apple', 'Orange', 'Banana'])
['Apple', 'Orange', 'Banana']
['Apple', 'Banana', 'Orange']