gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:44:13 25 4
gpt4 key购买 nike

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

我想使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com