Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

MATLAB® で Python® 変数を使用するには、Python オブジェクトを MATLAB 配列に変換してから、必要に応じてその配列にインデックスを付けます。Python オブジェクトは、たとえばオブジェクトを 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 no properties.

    [2.0, 3.0]

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

res = li{1}
res =

     1

型のマッピング

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

patient = py.dict(pyargs('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 no properties.

    ['c:\\work']


ans = 

  Python str with no properties.

    c:\work

次元を確認します。

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

    11


sz =

     1    11

配列のサポート

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

Python 関数に対して 0 ベースのインデックスを使用

Python は 0 ベースのインデックスを使用し、MATLAB は 1 ベースのインデックスを使用します。py.sys.path などの Python 関数を呼び出すと、Python コンテナー x の最初の要素のインデックス値は int32(0) となります。最後の要素のインデックス値は、int32(py.len(x)-1) です。

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

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

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

大かっこ [] の使用。

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

論理インデックス付け。

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

コンマ区切りリスト。

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

関連する例

詳細