python - 获取字符串及其子字符串的所有组合

标签 python string

我见过很多关于获取所有可能的子字符串(即相邻的字符集)的问题,但没有关于生成所有可能的字符串(包括其子字符串的组合)的问题。

例如,让:

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'等等

最佳答案

您可以使用 itertools.combinations 轻松完成此操作

>>> from itertools import combinations
>>> x = 'abc'
>>> [''.join(l) for i in range(len(x)) for l in combinations(x, i+1)]
['a', 'b', 'c', 'ab', 'ac', 'bc', 'abc']

如果你想以相反的顺序返回它,你可以让 range 函数以相反的顺序返回它的序列

>>> [''.join(l) for i in range(len(x),0,-1) for l in combinations(x, i)]
['abc', 'ab', 'ac', 'bc', 'a', 'b', 'c']

关于python - 获取字符串及其子字符串的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51538192/

相关文章:

python - Golang 相当于 Python 的 NotImplementedException

javascript - 有没有办法将字符串数组转换为对象集合?

c++ - 在C++中连接字符数组

c# - 不使用 String.Split 方法拆分字符串不会返回正确的结果

python - Linux 和 Windows 之间的多处理输出不同 - 为什么?

python - 求解求和中的一个变量

python - 查找列表列表中n个列表中出现的元素

python - 为什么 raw_input 在此 Learn Python the Hard Way 练习变体中创建无限循环?

python - 尝试在Python中以特殊格式在字符串中查找带有通配符整数的文本

mysql 针对 concat 查询 LIKE 条件