如何获得字符串的组合元音或辅音?

问题描述

给定指数的可能组合数 例如单词 BANANA 的索引 [0] 应该给我:

{'B','BA','BAN','BANA','BANAN','BANANA'}
word='BANANA'
indices=[0,2,4]
def find_combinations(word:str,indices:list):
    a=[''.join(l) for i in range(len(word)) for l in combinations(word,i+1)]
    b=[x for x in a if x.startswith('B')]
    return b

输出

set(b)
{'B','BAA','BAAA','BAAN','BAANA','BANAA','BANANA','BANN','BANNA','BN','BNA','BNAA','BNAN','BNANA','BNN','BNNA'}

期望输出

{'B','BANANA'}

解决方法

您不需要组合,您可以使用 slicesrange 轻松生成从特定索引开始的前缀。

from typing import List

def get_parts(word: str,start: int) -> List[str]:
    return [word[start:i] for i in range(start + 1,len(word) + 1)]

(显然,如果您需要将其更改为 return { ... },您可以将其更改为 set

>>> get_parts("BANANA",0)
['B','BA','BAN','BANA','BANAN','BANANA']

>>> get_parts("BANANA",2)
['N','NA','NAN','NANA']

>>> get_parts("BANANA",4)
['N','NA']
,

您可以根据给定单词的索引,向前创建组合。

word = "BANANA"
indice = [0,2,4]

def find_comb(word:str,indice:list):
    final = []
    for i in indice:
        local = []
        new = ""
        for j in word[i:]:
            new = new + j
            local.append(new)
        final.append(local)
    return final

print(*find_comb(word,indice),sep='\n')

这将为您提供列表列表作为组合索引。

输出:

['B','BANANA']
['N','NANA']
['N','NA']

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...