Python♪リストの基本的な扱い方。リストとNumPy配列との違い。JuneホームPython♪の学習とホームページ作成のブログPython♪リストの基本的な扱い方。リストとNumPy配列との違い。LINE2019.07.28ゆうちゃんとの勉強もついにリストを勉強することになりました。if文、for文、リスト(配列)が分かれば、できることがぐっと広がるので楽しみです。リストについてどこまで教えればよいのか悩むところです。スライス、内包表記、浅いコピーと深いコピーなど、知っておいて欲しいことはたくさんあります。いう順番で説明すればよいのか悩んでしまいます。わたし「今日から勉強するリストって、色々なデータを1つの箱に詰め込んじゃう方法なんだけど、なにが便利かわかる?」ゆうちゃん「う~ん。アイス食べながら考えようよ。」わたし「まあ、いきなり、なにが便利かわかるといわれても難しいよね。」ゆうちゃん「データを整理して見やすくするのかな?わからないけど。」わたし「ごめん、質問がわかりにくすぎるよね。実はどこまで説明すればいいのか悩んでるのよ。」ゆうちゃん「いつも、自信満々で教えてるのに、めずらしいね。難しいと思ったらすぐに言うから、どこまでも行っちゃってよ。」わたし「・・・そうね、リストが難しいわけではないんだけど、教える順番で悩んじゃって。」ゆうちゃん「Pythonのせ・ん・せ・い。信頼してるから、とにかく、やっちゃって。」あらら、そういえば「習うより慣れろ」ってことわざがあったわね。ゆうちゃんからご指導いただいちゃいました。私が実際に購入した教材のご紹介0.ゆうちゃんとPythonシリーズこの記事は「ゆうちゃんとPythonシリーズ」の記事です。一連の記事は、以下のリンク集を参照してください。中学生のゆうちゃんとPythonシリーズなお、それぞれの記事は、シリーズの中でそれまでに習った文法を使ってサンプルコードを考えています。実際には、もっと、効率のよい書き方があるかもしれませんが、ご了承ください。1.リストの概要リストは、複数のデータを1つのグループにまとめて整理する仕組みです。まとめられたデータを要素と呼び、それぞれの要素に通し番号がつけられます。1つにまとめることで、まとめられた中で最も大きい値を求めたり、大きい順に並べ直したりといったことができるようになるので非常に便利です。通し番号をつけることにより、for文を組み合わせて様々なデータの操作が可能となります。具体的な例で考えてみましょう。あるクラスに「ゆうちゃん」「のび太」「お地蔵様」の三人の少年がいたとします。これをboysという名前のリストにまとめたいと思います。リストは、コード01の2行目の右辺(うへん)のように、角括弧(かくかっこ)とコンマを使って表現します。それを変数boysに代入するとboysという名前のリストの完成です。boysをprint文で出力すると、出力02のようにリストがそのまま出力されます。'お地蔵様']このとき、各要素には自動的に左から「ゆうちゃん」には0番、「のび太」には1番、「お地蔵様」には2番の番号が付けられます。各要素につけられた番号は、データを呼び出したり、変更したりするときに使われる番号です。boys[0]、boys[1]、boys[2]のような表記で各要素を指定できます。コード02では3~5行目で各要素を出力しています。7行目のように別のデータを代入すれば要素を変更することもできます。リストのイメージでは、このリストのイメージを図にしたいと思います。下図では、変数boysに0~2番までの箱が用意されており、それぞれの箱に、「ゆうちゃん」「のびた」「お地蔵様」というデータが入っています。「わざわざ、図にしなくても・・・」と思うかもしれませんが、「配列」という考え方を理解するためにはこの図が必要ですので、しっかりと目に焼き付けてください。上図は箱を横に並べましたが、箱を縦に並べて0~2の番号を上からつけると下の図のようになります。上の図の方がイメージしやすいですが、下の図も覚えておいてください。リストの中にリストを入れることができるなど、様々なデータ型を混在させることができます。リストはこの様に要素の構成の自由度が高いという特徴があります。3.14]はリストです。このように色々な型を混在できます。「リスト」に似たものに「配列」がありますが、「配列」は主に技術科学計算など計算速度を重視する場合に使われます。Pythonでは外部ライブラリNumPyで「NumPy配列」と呼ばれるものなどがそれに相当します。「配列」は計算速度は速いですが、違う型の混在を許さないなどリストと比較して色々な制限があります。NumPyは、Pythonを使いこなしたいと思ったら、必ず覚えることになる外部ライブラリーですので、少しだけ使い方を紹介したいと思います。コード04を見てください。リストと違うのは2行目でnumpyを読み込む部分と、変数boysに代入する3行目の「np.array()」の部分だけです。リストのコード02とほとんど同じですね。'お地蔵様']このように、要素の構成の自由度や追加や削除といった扱いやすさを重視した「リスト」と、計算速度を重視した「配列」は、使用用途の方向性が違うので使用できる関数が違ったり、違うところもありますが、同じようなデータの扱い方ができます。リストの中のリストの長さをそろえて、リストを配列のように使う例を紹介したいと思います。それぞれ、名前と数学のテスト結果を要素に持つリストです。4~6行目では、それぞれ、この0~3番目の要素を出力しています。7行目では2番目の要素の内容を変更しています。56]]リストの要素の数が増えると、どんどん横に長くなってしまいますので、リストは途中で改行することができ、上記コード05の2行目を下のコード06の2~4行目のように書き換えることができます。出力結果は出力05と全く同じになります。boys)次にリストboysの名前だけ、あるいは点数だけを操作してみましょう。コード07では、5~10行目で各要素を出力しています。boys[0][1]は、0番目の少年である’ゆうちゃん’の1番目のデータである算数の得点なので92が出力されます。12行目では、boys[1][0]の要素を’桃太郎’に変更しています。行列計算これを図にすると以下のようになります。箱を縦横に並べて、靴箱のようになっています。靴箱の縦方向を「行」と呼び、靴箱の横方向を「列」といいます。の’のび太’は「1行目0列目の要素」と表現します。呼び出す場合のboys[1][0]では、左側の数字1が「行数(ぎょうすう)」を示し、右側の数字が「列数(れつすう)」を示します。boys[行][列]実は「行」や「列」といった特別な名前がついているのは靴箱の形の場合だけです。(マトリクス)」と呼ばれます。行列の計算の考え方がなければ、コンピューターを使った科学技術計算はこれほど進化していなかったのではないでしょうか。機械部品の解析や、人工知能も「行列計算」が計算の中心です。「行列」の形が非常に重要であることを理解しましょう。行列の図は何度も見て覚えましょう。行列計算(行列を使った計算)は、プログラムでは「配列」「array(アレイ)」を使って計算します。Pythonでは、NumPy配列が有名です。リストと配列は異なりますが、リストでもここで紹介したようにすることで配列と同じように使うことができます。靴箱のような形の配列は2次元配列といいます。最初に説明した下図のような配列は1次元配列といいます。NumPy配列は整形でなければならないリストでは、次のように内側のリストの長さがそろってなくてもかまいません。NumPy配列はきれいな長方形でなくてはならないので注意しましょう。56]]3.3次元配列リストで3次元配列(厳密には配列ではありませんが)を作ってみましょう。boys[1][2][0]では、左側の[1]はB組であることを示し、真ん中の[2]は0から始まり2番目の少年であることを示し、右側の[0]は、点数ではなく名前を指していることを示します。883次元配列は下図のような同じ形の2次元配列を重ねたものです。重ねたあとの図は下図のようになり、立方体になります。4次元以上の配列のコードを記述することも可能ですが、図に表すことはできなくなってしまいます。boys[1][2][3]4.リストとNumPy配列の違いのまとめリストの概要について説明しましたが、配列との違いについても簡単に説明してきました。ここでは、リストと配列の違いを簡単に説明したいと思います。「リスト」は、要素の構成の自由度や追加や削除といった扱いやすさを重視しています。「配列」は計算速度を重視しており、行列計算など科学技術計算を行うための関数が多く用意されています。NumPy配列は違うデータの型を混在できません。配列では原則として最初に決めたデータの総数を変更しません。私は、これから先、ゆうちゃんに配列を扱うようなプログラミングに挑戦して欲しいと思っています。それはすぐ後のことかもしれないけれど、私とゆうちゃんの勉強会が終わったあとのことかもしれません。配列を扱う入り口の所までは立たせてあげたい!ゆうちゃんが自分でNumPy配列を勉強をしたり、別の言語の配列を勉強したりするときに、今日の勉強が役にたって欲しいと思っています。勉強会の最初に迷っていたのは、プログラミング初心者のゆうちゃんにリストと配列の違いをどの程度まで説明するかについてです。ゆうちゃんは「分かった!完璧!教えるのうまいね♪こんなことで悩むなんて、ありがとう。のび太くんの点数を100点に変更してください。出力結果は出力10のようになります。56]]解答の表示・非表示の切り替え※ブラウザによっては最初から表示されてしまいます。Chrome推奨)以下、7行目でのび太君の点数を書き換えました。以下、私が実際に購入したPythonの教材をまとめてみました。Pythonを学習する上で、少しでもお役に立つことができればうれしいです。World!親戚の中学1年生のboyゆうちゃん(偽名です。)とPythonの勉強をはじめます。Pythonのホームページ作る話をしてたら、勢いで教えることになってしまいました。兄ちゃんに古いノートパソコンもらったといって...PythonPython♪リストの内包表記が苦手な人は図で感覚をつかもう慣れないとリストの内包表記って頭が変になりませんか。そんな場合は、図で感覚をつかみましょう。リストの内包表記は、for文やif文を使ったリストの作成がたった1行で書けてしまう便利な表記です。うまう使いこなせばすっきりした見やすいコ...PythonPython♪基本:簡単なfor文とrandom関数を使ってグラフを表示しようif文もfor文も配列も関数も知らない状況で、なにからPythonを説明するのがいいのでしょう。Wolrdの出力が面白いのは最初の1度きりです。プログラミングの家庭教師って、思ったよりも難しい...Pythonpython♪基本:importで読み込むのはパッケージ?モジュール?関数?ここでは、import文の使い方を勉強します。わからないうちは、コピペするだけのつまらないimport文ですが、意味や書き方がわかれば、少しだけimport文に親しみがわいてきます。「どうなるんだろう・・・」と悩みそうなポイントを網羅し...PythonPython♪基本:変数の数値の変更とパソコン内での参照先アドレス。中1のゆうちゃんに、どこまで説明するか迷ったけれど、変数への値の代入とパソコン内での参照先アドレスについて説明することにしました。コンピューターのメモリー上でのデータの扱いを、ほとんど意識しなくてもよい言語もあります。私はPyrho...PythonPyrhon♪リストのインデックス指定とスライスの例題ゆうちゃんとのPythonの勉強もリストのスライスを覚えるところまで進みました。スライスはリスト操作において大変便利な機能ですのでしっかりと覚えましょう。Studioが遅いときの対策2020.01.11Kotlin♪環境設定「HAXMがインストールされていません」2020.01.052020.01.08Python♪FEM:部材座標系の要素剛性マトリクス2020.01.04Kotlin♪スマホアプリの言語は、Kotlin、Java、C#、Dart?2020.01.012020.01.13スポンサーリンクスポンサーリンク。