我见过很多关于获取所有可能的子字符串(即相邻的字符集)的问题,但没有关于生成所有可能的字符串(包括其子字符串的组合)的问题。
例如,让:
x = 'abc'
我希望输出类似于:
['abc', 'ab', 'ac', 'bc', 'a', 'b', 'c']
重点是我们可以去掉原字符串中不相邻的多个字符(以及相邻的字符)。
到目前为止,这是我尝试过的:
def return_substrings(input_string):
length = len(input_string)
return [input_string[i:j + 1] for i in range(length) for j in range(i, length)]
print(return_substrings('abc'))
但是,这只会从原始字符串中删除相邻字符串集,并且不会返回上例中的元素 'ac'
。
另一个例子是如果我们使用字符串 'abcde'
,输出列表应该包含元素 'ace'
, 'bd'
等等。
原文由 aL_eX 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
itertools.combinations
轻松做到这一点如果你想要它以相反的顺序,你可以让
range
函数以相反的顺序返回它的序列