exponenta event banner

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

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

Контейнер Python обычно является типом последовательности (list или tupleили тип отображения (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.

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около-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.

Связанные примеры

Подробнее