如何用Python生成整数元组的所有可能括号化形式?
问题描述
给定一个包含整数的可迭代容器,生成所有可能的整数括号化形式组成的元组。两个数字之间的分隔符只能选择, 或)(。
输入示例
# INPUT (1, 2, 3)
输出示例
# OUTPUT result = ( "(1, 2, 3)", "(1, 2)(3)", "(1)(2, 3)", "(1)(2)(3)" )
实现思路
每个元素间的分隔位置有两种选择:用, 保持同括号,或用)(拆分括号。可以用二进制数表示这些选择:二进制位为1时选, ,为0时选)(,遍历所有2^(元素数-1)种组合即可生成全部结果。
最简Python实现代码
def generate_parenthesized_forms(iterable): elems = list(map(str, iterable)) n = len(elems) if n == 0: return () res = [] # 遍历所有分隔组合(共2^(n-1)种) for i in range(2 ** (n-1)): # 生成n-1位二进制字符串,补前导0对齐长度 bits = bin(i)[2:].zfill(n-1) # 拼接括号化字符串 s = '(' + elems[0] for bit, elem in zip(bits, elems[1:]): s += ', ' if bit == '1' else ')(' s += elem s += ')' res.append(s) return tuple(res) # 测试示例 input_data = (1, 2, 3) result = generate_parenthesized_forms(input_data) # 按示例格式输出结果 print("result = (") for item in result: print(f" {repr(item)},") print(")")
内容的提问来源于stack exchange,提问作者Toothpick Anemone
相关产品推荐
相关产品推荐

