リストと辞書型 （小学生高学年向け・python）

# リストの使い方まとめ ＋ dictionary(辞書)型  

皆さん電子辞書って持ってますか？先生は高校入学と同時に買ってもらった覚えがあります。  ![900_2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2732489/77ba0295-d64c-64fb-27ad-d6cd70e3a589.jpeg)

あれ、今のはどうかわかんないですが、昔のヤツでOS（パソコンのベースになるソフト）を入れて、いろいろ遊ぶことができたんですよ。ファミコン（知ってる？）世代のゲームを入れて授業中遊んだり、よくやってました。今はもう電子辞書どころかタブレットを配ってるわけですから、すげー時代になったもんだと思うわけです。ただ、そんなことばっかしてるとリッキーみたいになっちゃうよ。  
  
# リストってなんだっけ  
次のコードを見てみましょう。単純に変数の中身を表示していますが、varという変数に、５と１０の数字が代入されているのに、１０しか表示されていません。  
```python
var = 5 # varに5を代入
var = 10 # varに510を代入

print(10)
# 実行結果：10
```  
さて、変数の復習です。変数は小さい箱のイメージなのは、はるか昔にやりました。変数は、小さい箱なので、１つのデータしか入れる（代入する）ことはできません。なので、上のコードのように新しいデータを入れようとすると、古いデータは消えてしまいます。  
![1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2732489/05ec4e7e-9487-9fd5-bc8a-98320c6c1164.png)
  
これじゃ不便なときもありますよね。一つの変数にいくつもデータを入れることができたら、便利だよねーといって生まれたのが、**リスト**というデータ型です。  
  ***
## リストの基本  
リストの基本は超簡単。[]大かっこでくくって、 , カンマで区切る。  
#### リストの書き方（宣言）  
```python
変数名 = [要素０,要素1,要素2,要素3,要素4......]
```  
#### リストからデータを持ってくる  
```python
変数名[インデックス番号]
```  
要素の番号をインデックス番号といいます。  
```python
# ricky_senseiリストを作成
ricky_sensei = ["イケメン", "かっこいい", "ステキ"]
# リストの１番目を持ってくる
print(ricky_sensei[1])
# 実行結果：かっこいい
```  
インデックス番号が０から始まるのは、もう何回もやってるのでみんなわかって、、、ますよね？？（圧）  
忘れてる方は、いくつか適当なリストを作って中身を表示してみましょう。  
***
  
  #### リストとfor文の相性はバツグン  

すでに学習したfor文の基本を思い出してみましょう
```python
# １０回「リッキー先生はイケメン」と表示するプログラム
for i in range(10):
    print("リッキー先生はイケメン")
```  
このrange(10)を、作成したリストに置き換えてみます。
```python
ricky_sensei = ["イケメン", "かっこいい", "ステキ"]
for i in ricky_sensei:
    print(i)
# 実行結果：イケメン かっこいい ステキ
```
このようにリストとfor文を組み合わせることで、**リストの中すべての要素に、順番に同じ処理を行うことができます。**  
  
数字のリストだと次のようなことができます。  
```python
すべての要素に１を足すプログラム
number_list = [13, 4, 2, 8]
for i in number_list:
    print(i + 1)
# 実行結果：14 5 3 9
```  
***
#### リストの小技 基本編  
リストでよく使う小技をまとめます。  
①リストの要素を書き換える（上書き）  
要素の書き換えはかんたん！  
```python
変数名[変更したい要素のインデックス番号] = 新しく入れたい要素
```
例えばこんなかんじ  
```python
ricky_sensei = ["イケメン", "かっこいい", "ステキ"]
# ０番目の要素を「超イケメン」に変更
ricky_senisei[0] = "超イケメン"
print(ricky_sensei)
# ※printでリストを表示すると、カッコつきで全体が表示される。
実行結果：["超イケメン", "かっこいい", "ステキ"]
```  
  
  ②リストどうしの足し算
  リスト同士は足し算して連結することができます。
```python
ricky_kao = ["イケメン", "かっこいい", "すてき"]
ricky_seikaku = ["やさしい", "明るい"]
# リスト同士を足し算
print(ricky_kao + ricky_seikaku)
# 実行結果；['イケメン', 'かっこいい', 'すてき', 'やさしい', '明るい']
  ```  
どうしてもリストの中身が気に入らないという人は、要素を変えてやってみたらいいんじゃない？やれるもんならね！！（圧）  
  
***
#### リストの小技 応用編  
応用編といっても、pythonにもとからあるリストの機能を使うだけです。  
①リストに新しく要素を追加（一番うしろに追加）  
「やべ！これ入れるの忘れてた！」みたいなときに、一番うしろに追加する方法
```python
ricky_sensei = ["イケメン", "かっこいい", "すてき"]
# 「ハンサム」を追加
rickky_sensei.append("ハンサム")

print(rickyu_sensei)
#実行結果：["イケメン", "かっこいい", "すてき", "ハンサム"]
```  
  
# 辞書型(dict型)  
リストに似たデータ型の一つに**辞書型**というのがあります。リストはインデックス番号でデータを管理していましたが、辞書型では数字以外にも、文字列などで管理することができます。  
たとえば、クラスの生徒のイケメン度を記録しておきたいときなどに、リストではなく辞書型を使うと便利です（最低ｗ）  
```python
# クラスのイケメン度データ  
ikemendo = {"Aくん": "ふつう", "Bくん":"ぶさめん", "リッキー":"イケメン"}
# データを持ってくるときはインデックス番号ではなくデータで呼び出す
print(ikemendo["Aくん"])
```  
「Aくん」というデータに「ふつう」というデータが紐付いているので、Aくんのデータを持ってくるときはikemendo["Aくん"]とします。このAくんにあたるのが「キー」、「ふつう」にあたるのが「値」と呼ばれます。  
辞書型の特徴として、以下のものがあります。
>①「順番」の概念がないので、ikemendo[0]などとしてもエラーになる  
②ただし、for文を使ってリスト同様に全体に処理をすることができる。  

用途によって、リストと辞書型を使い分けて行きましょう。  
***
# 宿題  
①５つのランダムな数字を、numbersという変数名のリストに入れてください。  
②そのリストの中身全てを５倍して、全てを表示してください。  
③最後にそのリストに、数字を一つ何でもいいので追加してください。  
  
④キーが人の名前、値が誕生日の辞書（３人分）を作ってください。名前や誕生日は自由です。変数名はbirthday(バースデー)にしてください.そのなかの一人の誕生日を表示してください。  

***

プログラムはそれぞれ　[paizaのサイト](https://paiza.io/ja)　で実行しましょう。
しっかり復習してね！ではまた来週！