1

我有一个说明命题的字符串列表。例如

L = ['(A∧B)', 'A', 'B']

我的目标是将每个元素与字符串“∧”和括号“()”连接起来,从而得到以下字符串:

aim = "(((A ∧ B) ∧ A) ∧ B)"

他们是一个简单的方法吗?

4

3 回答 3

1

您可以使用递归:

def jn(d):
  return '('+' ∧ '.join(([d.pop()]+[d[0] if len(d)==1 else jn(d)])[::-1])+')'

print(jn(L))

输出:

'(((A∧B) ∧ A) ∧ B)'
于 2022-01-02T17:07:39.407 回答
1

reducefunctools模块使用:

from functools import reduce

aim = reduce(lambda l, r: f"({l} ^ {r})", L)
print(aim)

# Output
(((A∧B) ^ A) ^ B)
于 2022-01-02T17:08:15.570 回答
1

非常直接的答案

l = ["(A^B)", "A", "B"]
l = [each[1:-2] if each[0] == "(" else each for each in l] # Remove brackets if they exist
output = "(" * len(l) + ") ^ ".join(l) + ")" # Join
print(output)

输出

(((A^) ^ A) ^ B)
于 2022-01-02T17:12:17.533 回答