2024-09-19 22:41:56 发布
网友
我正在用一个jupyter笔记本上的数学优化库(PICOS)。
在PICOS中,符号//和&是用于垂直和水平连接的中缀运算符,用于在块中构建矩阵。请注意,我不能使用numpy.bmat,因为块不是numpy对象。
//
&
numpy.bmat
如果我有一个块的列表,比如说[A,B,C],我会用符号A & B & C水平连接它们来形成一个矩阵。当列表包含数百个符号而我无法手工构建矩阵时,问题就出现了。有没有一种简单的方法可以在列表中的每个符号之间插入中缀?
[A,B,C]
A & B & C
'&'.join([A,B,C])
或者
如果要在&之间使用空格
编辑:
同时将其包装在eval内
eval
eval(' & '.join([A,B,C]))
我本应该不那么匆忙的。我只是用一个递归函数来实现:
def concat_horizontal(lst): if len(lst) == 2: return lst[0] & lst[1] else: return concat_horizontal([lst[0] & lst[1]] + lst[2:])
还有一个类似的垂直连接。耶,递归!在
使用内置的reduce元函数(Python 2.7 docu,Python 3 docu)和代表&中缀运算符的^{}作为两个参数的函数:
reduce
from functools import reduce from operators import and_ def concat_horizontal(iterable_of_affine_expressions): return reduce(and_, iterable_of_affine_expressions)
或者
^{pr2}$如果要在
&
之间使用空格编辑:
同时将其包装在
eval
内我本应该不那么匆忙的。我只是用一个递归函数来实现:
还有一个类似的垂直连接。耶,递归!在
使用内置的} 作为两个参数的函数:
reduce
元函数(Python 2.7 docu,Python 3 docu)和代表&
中缀运算符的^{相关问题 更多 >
编程相关推荐