python入門講座 | List型の使い方1(リストを作成する方法)[第23回]

アラサーOLのためのpython入門講座
List型には様々なタイプの値や変数を格納することができます。

Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。

今回は「アラサーOLのためのpython入門講座」です!この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!「パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。

今日はList型変数の作成方法を解説します。List型変数には、複数の値を一つの変数として格納することができます。数値や文字列などを何でも格納することができます。Pythonで円滑な処理を行うために必須の知識です!是非マスターしましょう!

この記事を読めば、List型変数に値を格納する方法を知ることができます。ぜひ最後までお付き合いください!

Kaiko
Kaiko

この記事はこんな人におすすめ

  • 初心者だけどpythonを始めた!
  • pythonの基本的な使い方を知りたい!
  • 独学で学んだpythonの知識を整理したい!

Abstract | どんな値でも格納できるList型

List型変数には、複数の値を格納でき、整数、小数、文字列など、どのような値でも格納することができます。例えば、商品名(文字列)と単価(小数)と購入個数(整数)を持っているときに、これらを一つのList型変数として定義し、プログラムの別の場所で参照することができます。

また、List型変数の要素としてListを格納することで、List in Listという2次元配列やもっと高次元の配列のような変数を作ることもできます。例えば、商品名と単価と購入個数のデータを複数の商品について持っているときには、商品数 x 3列(商品名・単価・購入個数)の2次元配列的なListとして定義することができます。



Method | List型の作成方法(変数に値を格納する)

List型変数に値を格納する方法を解説します。実際に手を動かしながら学んでいきましょう!Jupyter Notebookを立ち上げてコーディングしながら読み進めてください。練習問題の後にコーディング例も掲載しますので、やってみてどうしてもわからなければそれを見て進めてみてください。

準備 | python notebookの新規作成

まずはpython notebookを用意しましょう。いつものpython_practiceのディレクトリに「practice_list_alloc」(allocはallocate: 割り当てるという意味)という名前のpython notebookを作成してください。ターミナルを立ち上げて~/python_practiceに移動、jupyter notebookを起動し、ブラウザから新規→Python3でpython notebookを開いて、ファイル→リネームでファイル名を決定します。
もしやり方がわからなければ、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」などで詳しく解説しているので、これらを見ながらやってみてください。

python notebookを起動したら、適宜Markdownセルに説明書きを加えながら下記の説明に沿ってコードを書いて実行していきましょう。Markdownセルやコードセルなどの用語やこれらの使い方は過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」を参照してください。練習問題の後にpython notebookの例を掲載します。もし書き方がわからなければそちらを見てください。



list型の作成1 | ベタ打ちの値を格納する

まずは単純なlist型変数を作成し、値とTypeを表示してみましょう。list型を作成するときは、格納したい値をカンマ区切って四角カッコで囲います。当然、カンマもカッコも半角です。

[要素1, 要素2, ..., 要素N]

のように記述します。list型などの配列タイプの変数に格納された値のことを要素と呼びます。以下で簡単な例で見ていきましょう。

int型の値を格納する

まずはint型(整数)の値をlistに格納してみましょう。以下を実行してみてください。

# define a list variable
var_list = [0,1,2,3,4]

# print the type of the variable
print(type(var_list)) # <class 'list'>

# print the variable
print(var_list) # [0, 1, 2, 3, 4]

ここでは、0から4までの5つの整数値を要素とするvar_listという名前のlistを作成しました。「type(var_list)」の結果はlist型となります(<class ‘list’>)。また、print()文で出力するとlist全体が出力されます()。各要素を出力したり、部分的に出力することもできますが、こちらは次回以降説明します。

float型の値を格納

次にfloat型(浮動小数点)の値を格納してみましょう。以下を実行してみてください。

# define a list variable
var_list = [3.14, 2.71, 1.41,  6.27, 4.29]

# print the type of the variable
print(type(var_list)) # <class 'list'>

# print the variable
print(var_list) # [3.14, 2.71, 1.41,  6.27, 4.29]

int型のときと同様、「type(var_list)」の結果はlist型となります。ここは格納されている値のTypeには依存しません。print文の結果もlist全体が出力されます。

str型の値を格納

最後にstr型(文字列)の値も格納してみましょう。以下を実行してみてください。

# define a list variable
var_list = ["apple", "mac", "iphone", "ipad", "watch"]

# print the type of the variable
print(type(var_list)) # <class 'list'>

# print the variable
print(var_list) # ['apple', 'mac', 'iphone', 'ipad', 'watch']

結果は先程までと同様です。どんな種類の値を格納しても同じ振る舞いとなります。



list型の作成2 | 様々なTypeの値・変数を格納する

list型には様々なTypeの値、あるいは別に定義された変数を格納することができます。例えば、

[要素1, 要素2, ..., 要素N]

で、要素1が3(int)、要素2が3.14(float)、要素3が”pi”(str)などと、Typeが異なっていても構いません。あるいは、要素1を予め定義された変数とすることもできます。例を見ていきましょう。

異なるTypeの値を格納

まずは、int, float, strのベタ打ちの値を一つのlistに格納してみましょう。以下を実行してください。

# define a list variable
var_list = ["apple", 1.23, 4]

# print the type of the variable
print(type(var_list)) # <class 'list'>

# print the variable
print(var_list) # ['apple', 1.23, 4]

これも、Type確認の結果はlist型(<class ‘list’>)となります。print文による出力もこれまで通りです。

変数として定義された値を格納

listに格納される値は、変数として定義しておくこともできます。異なるtypeの変数でも構いません。以下を実行してみましょう。

# define variables
var1 = 'mac'
var2 = 12.34
var3 = 5

# define a list variable
var_list = [var1, var2, var3]

# print the type of the variable
print(type(var_list)) # <class 'list'>

# print the variable
print(var_list) # ['mac', 12.34, 5]

予め定義されていたvar1, var2, var3を要素とするlistを作成しました。print文による出力結果では、変数に格納された値が出力されます([‘mac’, 12.34, 5])。

様々なtypeの値・変数を混ぜて格納

変数とベタ打ちの値をひとつのlistに格納することもできます。例えば、要素1は新しく定義したいけれども、他の要素は予め定義されている変数を使いたいといった場面が想定されます。以下を実行してみましょう。

# define variables
var2 = 5.67
var3 = 8

# define a list variable
var_list = ['iphone', var2, var3]

# print the type of the variable
print(type(var_list)) # <class 'list'>

# print the variable
print(var_list) # ['iphone', 5.67, 8]

結果は上の例と同様となります。



list型の作成3: 高次元のlistを作る(list in list)

list型にlist型を格納することで、配列のような高次元のListを作ることができます(list in list)。各要素としてlistを格納するということです。N行M列の配列のようなlist in listなら以下のように作成します。

[[要素1.1, 要素1.2, ..., 要素1.M], [要素2.1, 要素2.2, ..., 要素2.M], ..., [要素N.1, 要素N.2, ..., 要素N.M]]

先程まで「要素1」としていたところがlist [要素1.1, 要素1.2, …, 要素1.M] に変わっています。各行の要素をインデントして書くとN行M列の形式であることがわかりやすいです。

[
   [要素1.1, 要素1.2, ..., 要素1.M], 
   [要素2.1, 要素2.2, ..., 要素2.M], 
   ..., 
   [要素N.1, 要素N.2, ..., 要素N.M]
]

ただし、配列(2次元ならN行M列)と異なり、各次元の要素数は統一されていなくても構いませ。1行目はM1列, 2行目はM2列, 3行目はM2列などと、行ごとに列の数が異なっていても問題ありません。

[
   [要素1.1, 要素1.2, ..., 要素1.M1], 
   [要素2.1, 要素2.2, ..., ..., 要素2.M2], 
   ..., 
   [要素N.1, 要素N.2, ..., ..., ..., 要素N.MN]
]

このように柔軟な使い方ができるのがlist型の特長です。以下で例をやってみましょう。

2次元配列的なlistを作る: N行M列

まずは2行3列の配列のようなlistを作ってみましょう。以下を実行してみてください。

# define a 2 dimensional list: 2 x 3
list_2d = [[1,2,3],[4,5,6]]

# print the variable
print(list_2d) # [[1, 2, 3], [4, 5, 6]]

この2次元配列的なlistを図にすると図1のような表のイメージです。2次元なので軸は2つあります。1つ目をaxis 0、2つめをaxis 1と呼びます。Pythonでは数はゼロから数えます。詳しい話は次回以降しますので、今は2次元配列的なlistのイメージだけ持っていてください。

図1. 2次元配列的なlist in listのイメージ

各行をインデントで記述するとわかりやすいです。以下を実行してみてください。

# define a 2 dimensional list: 2 x 3
list_2d = [
    [1,2,3], # 1st row
    [4,5,6]  # 2nd row
]

# print the variable
print(list_2d) # [[1, 2, 3], [4, 5, 6]]

このように書くと、1行目は1,2,3, 2行目は4,5,6であることがわかりやすいです。print文の出力は改行もインデントもされません。

実戦的な2次元的Listの例

より実戦的な例を扱ってみます。果物の名前、単価、仕入れ個数の3列の表形式データをlist型で作ってみます。ただ、実際にはこのような表形式のデータはPandas DataFrameやNumpy arrayで扱うことが多いです。この例は2次元的なListをイメージしやすくするための例です。以下を実行してみましょう。

# define a 2 dimensional list: fruite, price, number
list_2d = [
    ['apple', 100, 20],
    ['orange', 130, 30],
    ['grape', 250, 15]
]

# print the variable
print(list_2d) # [['apple', 100, 20], ['orange', 130, 30], ['grape', 250, 15]]

appleの単価が100円で仕入れ個数が20個といった情報をまとめて扱うことができます。

各次元(行)の要素数が異なるlist in list

2次元的なlistでも、各行の列の数が異なるlist in listを作ることができます。以下を実行してみましょう。

# define a list in list
list_list = [
    [1,2],
    [3,4,5],
    [6,7,8,9]
]

# print the variable
print(list_list) # [[1, 2], [3, 4, 5], [6, 7, 8, 9]]

1行目は1, 2の2要素、2行目は3, 4, 5の3要素といった具合に行ごとに要素数が異なります。図にすると図2のようなイメージです。

図2. 要素数の異なる2次元list in listのイメージ

3次元以上のlist in list

listの中にlistを格納すれば2次元的なlist in listになりますが、listの中のlistにlistを格納すれば3次元、更に深い構造でlistを格納すればそれ以上の次元のlist in listを作ることができます。3次元の例をやってみましょう。以下を実行してください。

# define a 3 dimensional list: 2 x 3 x 4
list_3d = [
    [
        [1,2,3,4],
        [5,6,7, 8],
        [9,10,11,12]
    ], 
    [
        [13,14,15,16],
        [17,18,19,20],
        [21,22,23,24]
    ]
]

# print the variable
print(list_3d) # [[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]]]

各次元の要素数が2, 3, 4の3次元配列です。図3のような直方体のイメージです。

図3. 3次元配列的なlist in listのイメージ。



Result | 練習問題

最後に練習問題です。以下の処理を行うコードを書いてみてください!

  1. 変数var_listにMac, iPad, iPhoneの3つの文字列をlistとして代入してください。
    変数var_listの型と値をprint()関数で出力してください。
  2. 変数prod1, price1, number1にそれぞれMac, 1249.50, 5を代入してください。
    変数po_listをprod1, price1, number1の3変数を要素としてlist型で作成してください。
    変数po_listの値をprint()関数で出力してください。
  3. 変数prod2, price2, number2にそれぞれiPad, 329.00, 12を代入してください。
    [[‘Mac’, 1249.5, 5], [‘iPad’, ‘329.00’, 12]]という出力となるように、変数po_listにprod1, price1, number1, prod2, price2, number2を代入してください。
    変数po_listの値をprint()関数で出力してください。

練習問題の回答例

できたら回答例を確認しましょう!下の画面をスクロールすると回答例が見られます!参考にしてみてください。また、今回の記事で出てきた他のコードも載っているので参考にしてください!

練習問題おつかれさまでした!
今日はここまでです。Python Notebookを終了しておきましょう。もしPython Notebookを終了方法がわからなければ過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」の「Python Notebookの起動・終了方法」の章を参照してください!



Conclusion | まとめ

最後までご覧いただきありがとうございます!list型変数の作成方法を解説しました!list型を使うことで一つの変数に複数の値を格納して処理するなど、実戦的なデータ分析のためのPythonコーディングがでできるようになります!ぜひマスターしましょう!

以上「python入門講座 | List型の使い方1(Listを作成する方法)」でした!
またお会いしましょう!Ciao!



References | 参考

以下の教科書を参考にして進めています!より詳しく学びたい方は購入して読んでみてください!

Pythonの参考教科書

コメント

タイトルとURLをコピーしました