对象列表上的python中缀运算符

2024-09-19 22:41:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用一个jupyter笔记本上的数学优化库(PICOS)。

在PICOS中,符号//&是用于垂直和水平连接的中缀运算符,用于在块中构建矩阵。请注意,我不能使用numpy.bmat,因为块不是numpy对象。

如果我有一个块的列表,比如说[A,B,C],我会用符号A & B & C水平连接它们来形成一个矩阵。当列表包含数百个符号而我无法手工构建矩阵时,问题就出现了。有没有一种简单的方法可以在列表中的每个符号之间插入中缀?


Tags: 对象numpy列表水平符号笔记本jupyter运算符
3条回答
'&'.join([A,B,C])

或者

^{pr2}$

如果要在&之间使用空格

编辑:

同时将其包装在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 docuPython 3 docu)和代表&中缀运算符的^{}作为两个参数的函数:

from functools import reduce
from operators import and_

def concat_horizontal(iterable_of_affine_expressions):
    return reduce(and_, iterable_of_affine_expressions)

相关问题 更多 >