lambda
在Python中有一个关键字函数:
f = lambda x: x**2 + 2*x - 5
Run Code Online (Sandbox Code Playgroud)
如果我想将它用作变量名称怎么办?有逃脱序列还是其他方式?
你可能会问为什么我不使用其他名字.这是因为我想使用argparse
:
parser = argparse.ArgumentParser("Calculate something with a quantity commonly called lambda.")
parser.add_argument("-l","--lambda",help="Defines the quantity called lambda", type=float)
args = parser.parse_args()
print args.lambda # syntax error!
Run Code Online (Sandbox Code Playgroud)
使用--help
选项调用的脚本给出:
...
optional arguments
-h, --help show this help message and exit
-l LAMBDA, --lambda LAMBDA
Defines the quantity called lambda
Run Code Online (Sandbox Code Playgroud)
因此,我想继续lambda
作为变量名称.解决方案也可能是argparse
相关的.
在MATLAB中迭代结构数据类型的常用方法是使用以下fieldnames()
函数:
mystruct = struct('a',3,'b',5,'c',9);
fields = fieldnames(mystruct);
for i=1:numel(fields)
mystruct.(fields{i});
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,这总是生成单元格数据类型,我想在SIMULINK中使用这种迭代来进行Matlab功能块,因为代码生成原因不允许单元格数据类型.
有没有办法在不同时使用单元数据类型的情况下迭代结构?
在Octave中有一种简洁的方法,在https://www.gnu.org/software/octave/doc/interpreter/Looping-Over-Structure-Elements.html中有解释.
for [val, key] = mystruct
# do something esp. with 'key'
end
Run Code Online (Sandbox Code Playgroud)
有没有人在MATLAB中知道类似的方法?