Python - 加入命题

Python - join propositions

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

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

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

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

他们的方法简单吗?

你可以使用递归:

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

print(jn(L))

输出:

'(((A∧B) ∧ A) ∧ B)'

使用 functools 模块中的 reduce

from functools import reduce

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

# Output
(((A∧B) ^ A) ^ B)

非常直截了当的回答

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)