PowerShell な人種が Python やってみたシリーズの 03 です。
配列の扱いが PowerShell と大きく違うので、配列だけにフォーカスしてまとめます。
Python では配列のことを「コンテナ」と呼びます。
コンテナと聞くと Docker をイメージしちゃいますが、違いますからね(笑
さて、このコンテナにはいくつの種類があります。
リストは、PowerShell で言うところのオブジェクト配列です。
PowerShell ではこう書きますね。
$Array = @() |
Python ではこう書きます。
Array = list() |
あるいは、こうも書けます。
Array = [] |
初期値をセットすることができます。
Array = ["One", "Two", "Three"] |
要素を追加するときは、append() メソッドを使います。
Array.append("Four") |
配列と同様に、インデックスを使ってアクセスすることができます。
# 代入 Array[0] = 1 # 取り出し Data = Array[2] |
要素数を確認するには len() を使います
len(Array) |
リストは、PowerShell のオブジェクト配列と同様に、形の異なるオブジェクトを混在して格納することが出来ます。
リストに指定オブジェクトが含まれているかを調べるには in を使います。
|
Powershell には無い面白い機能として、pop() メソッドかあります。
これはその名の通り、最後の要素の値を取り出した後に削除しります。
この機能があるので、面倒なことをしなくてもリストはスタックとして使うことが出来ます。
要素を挿入する insert() メソッドもあります。
insert() にオブジェクトを渡すと、先頭に要素が追加されます。
この機能を使うと、リストを Queue として扱うことが出ます。
insert() に挿入位置と、オブジェクトを渡すと、任意の位置の直前に要素を挿入することが出来ます。
このように要素を1つずつ取り出せるオブジェクトを「イテラブル」と呼びます。
タプルとは、値の変更ができないイミュータブルな配列です。
PowerShell には無い機能ですね。
値を変更されたくない定数的な配列として使います。
このように書きます。
TupleArray = tuple() |
あるいは、このようにも書けます。
TupleArray = () |
初期値をセットするには、このようにします。
TupleArray = ("One", "Two", "Three") |
タプルは初期値をセットする以外に要素をセットすることが出来ないので、初期値セットが必須ですね。
要素が1つだけタプルを作る場合は、カンマをつけて以下のように書く必要があります。
TupleArray = ("One" , ) |
これは、計算優先順位の () とは違うと明示的に Python に伝える必要があるからです。
タプルはリスト同様に [インデックス} で参照したり、in で要素が含まれているか確認できます。
辞書は PowerShell で言うところハッシュテーブルです。
PowerShell ではこう書きますね。
$HashTable = @{} |
Python ではこう書きます。
Dictionary = dict() |
あるいは、このようにも書けます。
Dictionary = {} |
初期値もセットすることができます。
|
要素を追加するときは、このようにします。
Dictionary["KB4019213"] = "2017/5/10" |
PowerShell のハッシュテーブルと同様にキーを指定してアクセスすることができます。
Dictionary["KB4019217"] |
辞書は、キーが存在しないときに例外を吐いてしまうので、in を使って存在確認してからアクセスする必要があります。
|
要素を削除するときは del を使います
del Dictionary["KB4019217"] |
コンテナの中にコンテナを格納すれば多次元配列も実現できます。
List01 = ["0-0", "0-1", "0-2"] List02 = ["1-0", "1-1", "1-2"] List03 = ["2-0", "2-1", "2-2"] Lists = [] Lists.append(List01) Lists.append(List02) Lists.append(List03) |
要素にアクセスするには、PowerShell の多次元配列と同様です。
Lists[1][2] |
元の配列に要素を追加すると、多次元配列にも反映されます。
List01.append("0-3") Lists[0][3] |
面白い事に、元の配列を別の変数に入力し、入力した変数に要素を追加すると、多次元配列にも反映されます。
Work = List02 Work.append("1-3") Data01 = Work[3] print(Data01) Data02 = Lists[1][3] print(Data02) |
内部処理はポインター渡しているんでしょうね。
多次元配列には、リストだけではなく、タプルも格納することが可能です。
PowerShell な人種が Python やってみた
http://www.vwnet.jp/Windows/etc.asp#Python
Copyright © MURA All rights reserved.