Main Content

Python コンテナー型内の要素へのアクセス

Python® container は、通常、sequence 型 (list または tuple) または mapping 型 (dict) です。Python では、大かっこ [] または関数 operator.getitem を使用してコンテナー内の要素にアクセスします。スカラー string 引数を使用してコンテナーにインデックス付けすることができます。

シーケンス型

Python シーケンス型は MATLAB® cell 配列のような動作をします。

サブシーケンスを取得するには、小かっこ () のインデックスを使用します。

li = py.list({1,2,3,4});
res = li(2:3)
res = 
  Python list with values:

    [2.0, 3.0]

    Use string, double or cell function to convert to a MATLAB array.

要素の内容を取得するには中かっこ {} を使用します。

res = li{1}
res = 1

型のマッピング

型をマッピングするには、Python の "キー" 引数を中かっこで指定します。

patient = py.dict(name="John Doe",billing=127);
patient{"billing"}
ans = 127

サイズと次元

MATLAB によってシステムの情報が表示されます。

p = py.sys.path;
class(p)
ans = 'py.list'

p にインデックスを付けます。

p(1)
p{1}
ans = 
  Python list with values:

    ['c:\\work']

    Use string, double or cell function to convert to a MATLAB array.

ans = 
  Python str with no properties.

    c:\work

次元を確認します。

len = length(p)
sz = size(p)
len = 11

sz = 1×2    
     1     11

配列のサポート

MATLAB はシーケンス型を 1N 列の配列に変換します。

インデックス

Python は 0 ベースのインデックスを使用し、MATLAB は 1 ベースのインデックスを使用します。Python プログラミングでは、長さ len の配列 x の要素には x(0) から x(len-1) までを使用してアクセスします。MATLAB でこの配列を操作するとき、x(1) から x(len) までを使用してこれらの要素にアクセスします。

Python オブジェクトへのインデックス付けの制限

MATLAB 行列内の要素を参照する場合と同様に、リストや辞書などの Python コンテナー オブジェクト内のデータにもインデックス値を使用してアクセスできます。ただし、行列のインデックス指定方法の中には Python の型に対してはサポートされていないものがあります。

MATLAB でサポートされないインデックス機能

大かっこ [] の使用。

collections.Sequence または collections.Mapping から継承しないコンテナー タイプのインデックス指定。

論理インデックス付け。

任意のインデックスの配列を使用したコンテナー内のデータへのアクセス。インデックスは start:step:stop の形式でなければなりません。

コンマ区切りリスト。

関数 numel は配列要素の数を返しません。1 を返します。

関連する例

詳細