【发布时间】:2022-11-22 05:51:23
【问题描述】:
给定一串数字,如 123456,我想找到所有不同的可能性,它们可以由 2 配对或由它自己配对。例如,从字符串 123456 我想得到:12 3 4 5 6、12 34 5 6、1 23 4 56 等
我能找到的最近的地方是:
strr = list("123456")
x = list("123456")
for i in range(int(len(strr)/2)):
newlist = []
for j in range(i):
newlist.append(x[j])
newlist.append(x[i] + x[i+1])
for j in range(len(x))[i+2:]:
newlist.append(x[j])
x = newlist.copy()
b = x.copy()
for f in range(len(b))[i:]:
if f == i:
print(b)
continue
b[f] = b[f - 1][1] + b[f]
b[f - 1] = b[f - 1][0]
print(b)
此代码给出输出: output
【问题讨论】:
-
你看过 itertools.combinations 了吗?您可以单独添加“单字母”部分,但这里是两个字母组合的单行示例:
from itertools import combinations choices = [''.join(comb) for comb in combinations('123456', 2)] -
你好;请将输出作为文本而不是图像发布。也就是说,这种算法通常最好递归编码。 @BenY:这可以帮助编写递归函数的代码,但本身并不能回答问题。
-
我相信我的是一个建议,而不是答案。两次调用会给出结果,尽管问题没有指定顺序、选择等。
标签: python