Используйте Python list Переменные в MATLAB

В этом примере показано, как использовать Python® list переменные в MATLAB®.

Вызывать функцию Python, которая берет list входной параметр, создайте py.list переменная. Чтобы преобразовать список в переменную MATLAB, вызовите cell функция, затем вызовите соответствующую функцию преобразования для каждого элемента в списке.

Вызовите функцию Python, которая берет list Входные параметры

len Python функция возвращает количество элементов в контейнере, который включает list объект.

py.help('len')
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

Вызовите os.listdir создать list Python из программ под названием P.

P = py.os.listdir("C:\Program Files\MATLAB");
class(P)
ans = 
'py.list'

Отобразите количество программ.

py.len(P)
ans = 
  Python int with properties:

    denominator: [1×1 py.int]
           imag: [1×1 py.int]
      numerator: [1×1 py.int]
           real: [1×1 py.int]

    9

Отобразите один элемент.

P{2}
ans = 
  Python str with no properties.

    R2016b

Индексация в список Python

Используйте индексацию MATLAB к элементам отображения в списке. Например, отобразите последний элемент в list. MATLAB возвращает list Python.

P(end)
ans = 
  Python list with no properties.

    ['R2021a']

Также можно выполнить итерации по списку в for цикл.

for n = P
    disp(n{1})
end
  Python str with no properties.

    R2014b

  Python str with no properties.

    R2016b

  Python str with no properties.

    R2017b

  Python str with no properties.

    R2018b

  Python str with no properties.

    R2019a

  Python str with no properties.

    R2019b

  Python str with no properties.

    R2020a

  Python str with no properties.

    R2020b

  Python str with no properties.

    R2021a

Преобразуйте Python list Введите к типам MATLAB

Этот код отображает имена в list P использование переменных MATLAB. Вызовите cell преобразовывать список. Список составлен из строк Python, так вызовите char функционируйте, чтобы преобразовать элементы массива ячеек.

cP = cell(P);

Каждое имя элемента ячеек является строкой Python.

class(cP{1})
ans = 
'py.str'

Преобразуйте строки Python в данные MATLAB.

mlP = string(cell(P));

Отобразите имена.

for n = 1:numel(cP)
    disp(mlP{n})
end
R2014b
R2016b
R2017b
R2018b
R2019a
R2019b
R2020a
R2020b
R2021a

Использование списка Python числовых типов в MATLAB

list Python содержит элементы любого типа и может содержать элементы смешанных типов. double MATLAB функция, используемая в этом коде, принимает что все элементы list Python являются числовыми.

Предположим, что у вас есть функция Python, которая возвращает list из целых чисел P. Чтобы запустить этот код, создайте переменную с этими значениями.

P = py.list({int32(1), int32(2), int32(3), int32(4)})
P = 
  Python list with no properties.

    [1, 2, 3, 4]

Отобразите числовой тип значений.

class(P{1})
ans = 
'py.int'

Преобразуйте P к массиву ячеек MATLAB.

cP = cell(P);

Преобразуйте массив ячеек в массив MATLAB double.

A = cellfun(@double,cP)
A = 1×4

     1     2     3     4

Считайте элемент вложенного list Ввод

Этот код получает доступ к элементу list Python переменная, содержащая list элементы. Предположим, что у вас есть этот list.

matrix = py.list({{1, 2, 3, 4},{'hello','world'},{9, 10}});

Элемент отображения 'world', который является в индексе (2,2).

disp(char(matrix{2}{2}))
world

Отображение продвинутой области значений элементов Python

Если вы используете разрезание, чтобы получить доступ к элементам объекта Python, форматом в Python является start:stop:step. В MATLAB синтаксис имеет форму start:step:stop.

li = py.list({'a','bc',1,2,'def'});
li(1:2:end)
ans = 
  Python list with no properties.

    ['a', 1.0, 'def']