あざらしのPythonべんきょうにっき

Pythonの勉強に関する備忘録と時々趣味

めちゃくちゃ使う!リストやディクショナリ

はじめに

前回は変数の扱い方のあれこれについて書いていきました。
さて、今回はリスト(配列)やディクショナリについて説明します。
リスト…これ本当によく使う。 それに、今後リストの拡張版みたいなのも沢山出てきます。
気になる人はNumpyやPandasなどを調べてみて、こいつらも使いこなすとめっちゃ便利(らしい?)。

リスト(配列)について

とりあえず定義してみる

早速だけど、配列をつくる。

a = [1, 10, 100, 1000, "abc"]
print(a)

まぁこれを実行すると

[1, 10, 100, 1000, 'abc']

と出力されます。簡単ですね。

まず、変数とは違って[  ]で囲って定義します。
そうすると、aという仕切りがある箱ができて、その一つ一つの部屋の中に数値を入れていきます。
例のように、"で囲ったらstr型(文字列)として箱の中に格納されます。 "がないと、 「abcなんて変数聞いてないよ!!」

と怒られるので注意!

どうやって取り出す?

fruits = ["イチゴ", "バナナ", "モモ", "メロン", "ブドウ" ]
print(fruits)

ここに、フルーツを入れた箱を作りました。 選んだフルーツの順番とか色とかに大きな意味はないです。

この箱の中から「メロンを取り出したい!!」 そんなときは

fruits = ["イチゴ", "バナナ", "モモ", "メロン", "ブドウ" ]
meron = fruits[3]
print(meron)

というように、リストに[]をつけて、その中に0から始めた通し番号を入れることで取り出すことができる。

逆に、「いや、3番の部屋に別のもの入れたいわ」
となったときは

fruits[3] = "キウイフルーツ"
print(fruits)

という風に直接入れてあげます。 そうすると

['イチゴ', 'バナナ', 'モモ', 'キウイフルーツ', 'ブドウ']

となる。メロンはpythonが食べちゃうのでなくなります。

リストの操作いろいろ

何となくリストのイメージがついたところで、どんどん使い方を流していきます。なんでも実行するに限る!!
準備として

b = [1, 2, 3, 10, 20, 30, 100, 200, 300]
print(b)

より、

[1, 2, 3, 10, 20, 30, 100, 200, 300]

を得る。

  • リストの長さを知りたい
    len(b)
    ⇒  9
  • 0から3つ分の数が欲しい
    c = b[0:3]
    ⇒ [1, 2, 3]
    注)ここではb[0], b[1], b[2]しか取り出されない、つまりb[3]は含まれない
  • ある番号から最後まで
    d = b[2:] ⇒ [3, 10, 20, 30, 100, 200, 300]
  • 最初からある番号まで e = b[:7] ⇒ [1, 2, 3, 10, 20, 30, 100]
  • 最初から最後の要素の一つ前 f = b[:-1] ⇒ [1, 2, 3, 10, 20, 30, 100, 200]

あきた…

ちなみに、しれっと一番最後の-1ってやつ面白いね。
(今のところ使えそうな場面がない…)

当然、こんなこともできます * 要素同士の計算 g = b[0] + b[1]
⇒ 3

リストのリスト(2次元配列)

リストは下のようにの入れ子にすると、2次元配列が作れます。 これも他の言語と似てますね。
table = [[10, 12, 13], [21, 19, 22], [15, 24, 17]]

ちなみに、もう一つを追加すれば3次元もできるよ。 画像処理のときに使うかもしれないね、(縦, 横, カラー)みたいな感じで。 この2次元配列の要素へのアクセスは
table[1][2] (2行3列目)
⇒ 22
というようにできます。

行にアクセスするには
table[2]
⇒ [15, 24, 17]

というようにできます。

自分の感覚からすると、2次元配列は今後出てくるであろうnumpyやpandasを使う事があるかもしれない。 けど、使い方のイメージは似ているので怖がることなく…

ディクショナリ

次に、リストと似てるけど、便利?なディクショナリの説明です。 とりあえず、一連の使い方はこんな感じ。

azarashi = {"名前": "ゴマ", "身長": 120, "体重": 100, "エサ": "アジ"}
print(azarashi)

print("名前は " + str(azarashi["名前"]))              # => 名前は ゴマ
print("体重は " + str(azarashi["体重"]) + "kg")       # => 体重は 100

azarashi["車"] = "ポルシェ"
print("好きな車は " + azarashi["車"])                 # => 好きな車は ポルシェ

7行目のように、後から足すことだってできます。
ディクショナリは、"名前"というキーと中身を紐付けすることで、中身を取り出すことができます。
リストと違って便利なところは、定義の順番を気にしなくていいということですね。

長くなりましたが今回はこんなとこで。