リストの作成、要素の追加・削除、アクセスと変更

この記事は個人の実行記録Noteです。個人的な経験からPythonの基本を初心の方向けに紹介します。

§ プログラミング >変数と演算 >リスト 


  複数のデータをまとめたものをコンテナという。タプルは値を変更出来ないコンテナで、リストは値の変更が出来るコンテナです。リストの書式は基本的に鍵カッコ [ ] で挟まれているカンマ区切りの複数の要素で作られる。タプルの ( ) は省略できる場合もありますが、リストのカッコ [ ] は省略が不可です。タプルよりリストの方が多様な使用方法があるので、汎用的に使用することが多い。 

*リストの作成方法

【表1参照】  [ ] カッコで挟み、要素をカンマ”,” 区切りで記載すればリストが出来る。

・要素が空の場合: 空リストを作成。要素を追加する初期のリストとして使用可能。
・要素1つの場合: リストは 要素1つでリストとなる。(タプルの場合はカンマが必要)
・複数の数値の場合: 要素を数値に出来る。[ ] は省略不可。(タプルは省略可能)
・複数の文字列の場合: 要素を文字列に出来る。[ ] は省略不可。(タプルは省略可能)
・複数の論理型変数の場合: 要素を論理型に出来る。[ ] は省略不可。(タプルは省略可能)
・変数型の混合の場合:
 要素は数値、文字列、論理型などを混合に出来る。
・要素がリストの場合: 要素をリストとすることが可能。
・コンテナ混合の場合: 要素をタプルとリストの混合に出来る。その他の変数も可能。
・内包表記の場合: 内包表記はカッコ [ ] で挟むだけでリストにできる。(タプルでは変換関数が必要)
・演算子+,*を使っての場合: +は結合式、*は繰り返し式として使用できる。(タプルと同じ)
・リスト関数が空の場合: list( ) 関数で、引数がなければ空のリストになる。
・タプルの変換の場合: list( ) 関数でタプルをリストに変換できる。引数としてのタプルは( ) を省略出来ない。
・range関数の変換の場合: list( )関数でrange()関数からリストに変換できる。

*既存のリストからの新規にリストを作成する

【表2参照】 既にあるリストを元にして複製した新しいリスト作る事ができる。元となるリストはそのままで使用することが出来る。 表2は既存リストを lis = [1,2,3,4,5] としている。

・コピーする: リストのコピー(copy)メソッドで同じ値を持つリストを作れる。
・要素の全代入: 要素を全指定して新規に代入する。(※全要素の指定をしないと、新規作成ではされない。2つの変数名が同じリストに関係付けられる)
・list再変換する: 既存リストをlist( ) 関数で別のリストに変換する。
・繰り返す: 元のリストに演算子*でリストの繰返しが出来る。(※リストの要素が変数やリストの場合は、繰り返した変数が重複されるので注意)
・リストを結合する: 演算子+でリストに別のリストを結合した新しいリストが作られる。

*作成したリストの要素の追加・削除

【表3参照】 リストは要素の追加や削除、値の変更が可能。 リスト要素の追加や削除はリストの要素数(サイズ)が変化することになる。 表3は最初のリストをA = [1,2,3,4] として、要素の追加と削除の方法をまとめた。 

・空にする: リストのクリア( .clear() )メソッドで空リストになる。
・要素を追加: リストの追加( .append() )メソッドで要素を1つ追加する。2つ以上は次のextendメソッド
・要素を拡張: リストの拡張( .extend() )メソッドで要素を複数追加する。
・要素を挿入: リストの拡張( .insert() )メソッドで要素を指定の位置(インデックス)に挿入する。(挿入するのはタプルやリストでも可能だが1要素のみ)
・指定値を削除: リストの削除( .remove() )メソッドで指定の値を持つ要素を削除する。同じ値が複数ある場合でも、削除されるのは最初の要素だけ。
・繰返し結合: 複合演算子*=でリストを繰返すリストが作れる。
・要素を結合: 複合演算子⁺=でリストの拡張が出来る。
・位置で要素を削除: 削除関数( del )でリストの指定の位置(インデックス)の要素を削除する。
・ 範囲で要素を削除: 削除関数( del )でリストの指定の範囲の要素を削除する。

*リストに格納されたデータへのアクセス方法

【表4参照】 リストに格納されたデータの値を知る(アクセスとか参照などとも云っています。)為には、知らいたいデータのリスト内での位置を指定します。 位置は0番目を最初の値、順番の数値を鍵カッコ[ ]で指定してリストに付けます。この位置番号をインデックスと言って、0から始まる整数なのでリスト中のデータの数より1少ない数までとなる(10個あれば、最後のインデックスは9)。 リスト内にあるリストやタプルはそのリストやタプル自体が1つの要素として指定される。

・位置を指定: 0から(データ数-1)までの数。データ数またはそれ以上の数はエラーになる。
・マイナス位置を指定: -1から -(データ数)までの数。リストの最後からの順番で指定。マイナスのデータ数まで指定が可能。要素数より小さいマイナスの数はエラーになる。
・範囲(始:終)を指定: 開始値番目から(終わり値-1)番目までを抽出できる。
・範囲の終を省略 : 開始値番目から最後までを抽出できる。
・範囲の始を省略 : 0番目から(終わり値-1)番目までを抽出できる。
・始:終:step を指定: 開始値番目を最初にして、step値飛ばしで(終わり値-1)番目までを抽出。 ただし、終わり値番目は含まれない。
・リスト内コンテナの要素 : 入れ子になっている場合は位置指定を2回行う。

*リストの要素値を変更する方法

 【表5参照】 リストに格納された要素は個別に変更が可能となる。表4の参照先に代入演算するのが基本的な変更方法となる。表5は要素値を順次変更している。

・位置指定の要素変更: データ参照の位置指定と同じ指定方法に代入を行う。マイナスでの位置指定も同じ。
・範囲指定の要素変更: データ参照の範囲指定と同じ指定方法に代入を行う。 前方、後方の指定も可能。 前方、後方の指定でも同じ。
・範囲内のstep変更: データ参照の範囲step指定と同じ指定方法に代入を行う。要素の数は一致しないといけない。
・ソート〈並替え〉: リストのソート( .sort() )メソッドで要素を昇順に並び替える。
・逆順ソート:
 リストの逆ソート( .sort(reverse=True) )メソッドで要素を降順に並び替える。

*idの変わらない変更と、新規idになる新規リスト

 リストはデータ変更、追加、コピーなどが行うことが出来る。変更方法によって、リストの中身が変更されて変更前のデータが消される場合と、新しいリストを作って元のリストはそのまま残っている場合ががある。 リストのid(アドレス)を見ることでその判定は出来ます。 表2、表3、表5の変更について、変数のidを調べたものが表6となります。 最初の変数lisのid は 274771846488 ですが、表2と同じコピーや変換処理では異なるid の変数になっているます。 元のlis変数はそのままです。 表3表5の変更を行った場合には、最初の id は変わりません(274771846488 です)。

 なお、リストの再設定で行った A = lis によって、Aとlisは同じリスト(同一)の変数となります。変数lisには変更操作していませんが、変数Aと同じ様に変化します。


〆後書

 リストだけでも色々な作成や変更方法がある。 まとめを意識して整理をしてみたことで、新しく知ったことも多かったです。


IG.Python Note

PythonプログラミングのためのTips集です。 趣味のPythonプログラミングをしていると、必要なプログラミング情報を自分で取集することが必要になります。 集めた情報を整理しておくと便利なので、個人的な学習メモとして記録を作りました。

0コメント

  • 1000 / 1000