第9回.リスト(list型、配列)
プログラミングにおいて覚えなければならないものとして配列があります。
Pythonの組み込み型に、リスト(list型)とタプル(tuple型)があります。
今回はリスト(list型)について解説します。
目次
リスト(list型)とは
紛らわしいのでリスト値という書き方は使わず、その場合は単にリストと記します。
要素が1つの場合は,カンマは不要です。
要素数が0の配列(空の配列、空リスト)は、[]だけにすることで作成できます。
リストの入れ子による多段階配列の作成
シーケンス型とイテラブルオブジェクト
データ構造による分類と、実装されているメソッドによる分類の違いと考えれば良いでしょう。
Pythonでは、シーケンス型はイテラブルです。
str、list、 tuple、range、これらは、シーケンス型でありイテラブルです。
しかし、イテラブルは必ずしもシーケンスではありません。
dict(辞書)やset(集合)はイテラブルですが、シーケンスではありません。
リスト演算子
+演算子
*演算子
inとnot in
inは、含まれていればTrue
not inは、含まれていなければTrue
リストのインデックスとスライス
リストのインデックス
Python | VBA | GAS | C++ | C# |
0 | 1 | 2 | 3 | 4 |
-5 | -4 | -3 | -2 | -1 |
リスト変数[index]
リストのスライス
スライスの指定は、
リスト変数[start:stop:step]
スライスでは、stopにはリストの要素数(最大インデックス+1)以上が指定できます。
stepは飛び飛びで取得する場合に使用します。
インデックス範囲外の数値を指定してもエラーにならず、有効な範囲内の要素が取得されます。
スライスでリストの値を変更
代入するリストの要素数が、スライスした要素数より少ないとその分の要素は減り、それより後ろの要素が前に詰まります。
逆に代入する要素数が多いとその分の要素が挿入され、それより後ろの要素は後ろにずれます。
スライスでリストの要素を追加
del文でリストの要素を削除
削除された要素より後ろの要素は前に詰まります。
リストのアンパック
複数の変数に複数の値を代入する
リストを展開して複数の変数に代入することをアンパックと言います。
ただし、左辺の変数の数と右辺のリストの要素数は一致している必要があります。
一致していない場合はエラーになります。
for文とリスト
for word in ["pthon","range","list","tuple"]:
print(word)
while文とリスト
lst = ["pthon","range","list","tuple"]
i = 0
while i < len(lst):
print(lst[i])
i += 1
リストに要素を追加するメソッド:append , insert , extend
append()メソッド
insert()メソッド
extend()メソッド
スライスでの、リスト変数[len(リスト変数):len(リスト変数)] この指定と同じ結果になります。
リストの要素を削除するメソッド:remove , pop , clear
remove()メソッド
値が存在しない場合はエラーとなります。
n = [1,2,3,4,3,5]
v = 3 #削除する値
while v in n:
n.remove(v)
pop()メソッド
clear()メソッド
リストの値を調べるメソッド:index , count
index()メソッド
値が存在しない場合はエラーになります。
count()メソッド
n = [1,2,3,4,3,5]
v = 3 #削除する値
while n.count(v) > 0:
n.remove(v)
リストを並べ替えるメソッド:sort , reverse , sorted関数
sort()メソッド
リストは返しません、戻り値はNoneです。
複数のデータ型が含まれたリスト(例えばstrとfloat)に対してsort()メソッドを実行した場合はエラーになります。
呼び出し時に仮引数名が必須になります。
リストのそれぞれの要素から比較キーを取り出すのに使います。
例、str.lower、str.upper
True がセットされた場合、リストの要素は個々の比較が反転したものとして並べ替えられます。
アルファベット順にする場合は、keyにstr.lowerまたはstr.upperを指定します。
reverse()メソッド
リストは返しません、戻り値はNoneです。
sorted()関数
リストをコピーするメソッド:copy
コピーによって新たなlistオブジェクトが作成されます。
ただし、
copy()メソッドはshallowコピーです、deepコピーではありません。
要素として含まれる他のオブジェクトは、コピー元とコピー先で同一のオブジェクトを参照します。
※importについては、後々に詳しく説明します。
もし理解しきれない場合は、
浅いコピーと深いコピーがあるということと、その挙動の違いを覚えておけば良いと思います。
同じテーマ「Python入門」の記事
第6回.for文とイテラブルオブジェクト
第7回.while文とデバッグ(ステップイン)
第8回.文字列操作(str型)
第9回.リスト(list型、配列)
第10回.タプル(tuple型、イミュータブル)
第11回.辞書(dict型)
第12回.組み込み関数一覧
第13回.関数の定義(def文)と引数
第14回.関数内関数(関数のネスト)とスコープ
第15回.lambda(ラムダ式、無名関数)と三項演算子
第16回.Pythonの引数は参照渡しだが・・・
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。