python - 获取一串数字并插入 + 和 - 运算符

标签 python string recursion

我被这个看似微不足道的问题难住了......

我想使用 python 获取一串数字(例如 "123")并创建一个列表,其中包含所有可能的表达式,其中 "+""-"(或什么都没有)可以插入任何数字之间。

例如 "123" 列表将是:

["123","12+3","12-3","1+23","1+2+3","1+2-3","1-23","1-2+3","1-2-3"]

如果数字字符串的长度是N,那么列表应该包含3^(N-1)个字符串。

我觉得这应该递归地完成,但我一直在试图弄清楚如何返回 3 个不同的选项(+、-、无)。

我认为函数的基本情况应该是:

def options(string):
  if len(string) == 1:
    return string
  else:
    #This is where I am stuck

最佳答案

这里有一个使用 itertools.product() 的简单但简短的解决方案:

def plus_minus(s):
    for t in itertools.product(["", "+", "-"], repeat=len(s) - 1):
        yield "".join(itertools.chain.from_iterable(zip(s, t))) + s[-1]

例子:

>>> list(plus_minus("123"))
['123', '12+3', '12-3', '1+23', '1+2+3', '1+2-3', '1-23', '1-2+3', '1-2-3']

这是一个递归的解决方案:

def plus_minus(s):
    if len(s) <= 1:
        yield s
        return
    for x in ["", "+", "-"]:
        for y in plus_minus(s[1:]):
            yield s[0] + x + y

我认为递归解决方案在这里确实更清晰。

关于python - 获取一串数字并插入 + 和 - 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9823797/

相关文章:

c - 在 C 中使用递归函数进行二分查找

python - 如何使用正则表达式搜索 unicode 文本并查找包含重复字母的单词?

html - UILabel sizetofit 隐藏了属性文本中的一些单词

python - DSX Python 导入错误 : undefined symbol: PyUnicodeUCS2_AsUTF8String

python - 在 Python 中如何将文件名中的某些字符列入白名单?

ios - 在 iOS 应用程序中安全传送静态文本的最佳方式?

scala - 为什么 Scala 'match' 卡在一个永远的循环中

go - 如何用两个手动调用替换简单的两匝回路(棘手)

python - 将数据库添加到 Mezzanine 项目会产生 "sqlite3.OperationalError: no such table: django_site"

python - numpy.choose 的替代方案允许任意参数或至少超过 32 个参数?