Доступ к элементам в типах контейнеров Python

Для работы с Python® переменная в MATLAB®преобразуйте объект Python в массив MATLAB, а затем при необходимости индексируйте его в массив. Можно также сохранить объект Python, не преобразуя, например, чтобы передать объект в метод Python.

container Python обычно является типом sequence (list или tuple) или тип mapping (dict). В Python используйте квадратные скобки [] или operator.getitem функция для доступа к элементу в контейнере. Скаляр string аргументы могут использоваться для индекса в контейнер.

Типы последовательностей

Типы последовательности Python ведут себя как массивы ячеек MATLAB.

Получите подпоследовательность с помощью () сглаживания скобок индексация.

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 key.

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 преобразует тип последовательности в 1-by- N массив.

Используйте нулевую индексацию для функций Python

Python использует индексацию с нулем; MATLAB использует индексацию на основе одного. Когда вы вызываете функцию Python, такую как py.sys.path, значение индекса первого элемента массива контейнера Python, x, есть int32(0). Значение индекса для последнего элемента int32(py.len(x)-1).

Ограничения на индексацию в объекты Python

Вы можете получить доступ к данным в объектах контейнера Python, таких как списки и словари, со значениями индекса, подобными ссылкам на элемент в матрице MATLAB. Существуют, однако, способы индексации в матрицы, которые не поддерживаются для этих типов Python.

Функции индексации, не поддерживаемые в MATLAB

Использование квадратных скобок, [].

Индексация в тип контейнера, который не наследует от collections.Sequence или collections.Mapping.

Логическая индексация.

Доступ к данным в контейнере с произвольным массивом индексов. Индекс должен иметь форму start:step:stop.

Разделенные запятыми списки.

numel функция не возвращает количество элементов массива. Возвращает 1.

Похожие примеры

Подробнее о