简体   繁体   English

如何使用Python简单地添加组合元音每个辅音

[英]How to simple add combination vowel each consonant using Python

I want to get combination from addition vowel in each consonant in a string 我想从字符串中每个辅音的加元音中获得组合

for example 例如

string = "wrld"

and the results like : 结果如下:

{ "warld","wirld,"wurld","werld","world","warald","warild",.....,"worolode","worolodo"}

We'll set up our vowels, including the empty string to represent neighboring consonants. 我们将设置元音,包括表示相邻辅音的空字符串。 Then we'll use itertools.product to get all the vowel combinations of the right size. 然后,我们将使用itertools.product获得大小合适的所有元音组合。 Then we use itertools.zip_longest to interweave the vowels and consonants. 然后,我们使用itertools.zip_longest交织元音和辅音。 Finally, we use ''.join() to combine them back into words. 最后,我们使用''.join()将它们组合成单词。

import itertools

vowels = ['', 'a', 'e', 'i', 'o', 'u', 'y']

def word_gen(word):
    vowel_gen = itertools.product(vowels, repeat=len(word)+1)
    for v in vowel_gen:
            yield ''.join(c for x in itertools.zip_longest(v, word, fillvalue='') for c in x)

An example: 一个例子:

>>> list(word_gen('bb'))
['bb', 'bba', 'bbe', 'bbi', 'bbo', 'bbu', 'bby', 'bab', 'baba', 'babe', 'babi', 'babo', 'babu', 'baby', 'beb', 'beba', 'bebe', 'bebi', 'bebo', 'bebu', 'beby', 'bib', 'biba', 'bibe', 'bibi', 'bibo', 'bibu', 'biby', 'bob', 'boba', 'bobe', 'bobi', 'bobo', 'bobu', 'boby', 'bub', 'buba', 'bube', 'bubi', 'bubo', 'bubu', 'buby', 'byb', 'byba', 'bybe', 'bybi', 'bybo', 'bybu', 'byby', 'abb', 'abba', 'abbe', 'abbi', 'abbo', 'abbu', 'abby', 'abab', 'ababa', 'ababe', 'ababi', 'ababo', 'ababu', 'ababy', 'abeb', 'abeba', 'abebe', 'abebi', 'abebo', 'abebu', 'abeby', 'abib', 'abiba', 'abibe', 'abibi', 'abibo', 'abibu', 'abiby', 'abob', 'aboba', 'abobe', 'abobi', 'abobo', 'abobu', 'aboby', 'abub', 'abuba', 'abube', 'abubi', 'abubo', 'abubu', 'abuby', 'abyb', 'abyba', 'abybe', 'abybi', 'abybo', 'abybu', 'abyby', 'ebb', 'ebba', 'ebbe', 'ebbi', 'ebbo', 'ebbu', 'ebby', 'ebab', 'ebaba', 'ebabe', 'ebabi', 'ebabo', 'ebabu', 'ebaby', 'ebeb', 'ebeba', 'ebebe', 'ebebi', 'ebebo', 'ebebu', 'ebeby', 'ebib', 'ebiba', 'ebibe', 'ebibi', 'ebibo', 'ebibu', 'ebiby', 'ebob', 'eboba', 'ebobe', 'ebobi', 'ebobo', 'ebobu', 'eboby', 'ebub', 'ebuba', 'ebube', 'ebubi', 'ebubo', 'ebubu', 'ebuby', 'ebyb', 'ebyba', 'ebybe', 'ebybi', 'ebybo', 'ebybu', 'ebyby', 'ibb', 'ibba', 'ibbe', 'ibbi', 'ibbo', 'ibbu', 'ibby', 'ibab', 'ibaba', 'ibabe', 'ibabi', 'ibabo', 'ibabu', 'ibaby', 'ibeb', 'ibeba', 'ibebe', 'ibebi', 'ibebo', 'ibebu', 'ibeby', 'ibib', 'ibiba', 'ibibe', 'ibibi', 'ibibo', 'ibibu', 'ibiby', 'ibob', 'iboba', 'ibobe', 'ibobi', 'ibobo', 'ibobu', 'iboby', 'ibub', 'ibuba', 'ibube', 'ibubi', 'ibubo', 'ibubu', 'ibuby', 'ibyb', 'ibyba', 'ibybe', 'ibybi', 'ibybo', 'ibybu', 'ibyby', 'obb', 'obba', 'obbe', 'obbi', 'obbo', 'obbu', 'obby', 'obab', 'obaba', 'obabe', 'obabi', 'obabo', 'obabu', 'obaby', 'obeb', 'obeba', 'obebe', 'obebi', 'obebo', 'obebu', 'obeby', 'obib', 'obiba', 'obibe', 'obibi', 'obibo', 'obibu', 'obiby', 'obob', 'oboba', 'obobe', 'obobi', 'obobo', 'obobu', 'oboby', 'obub', 'obuba', 'obube', 'obubi', 'obubo', 'obubu', 'obuby', 'obyb', 'obyba', 'obybe', 'obybi', 'obybo', 'obybu', 'obyby', 'ubb', 'ubba', 'ubbe', 'ubbi', 'ubbo', 'ubbu', 'ubby', 'ubab', 'ubaba', 'ubabe', 'ubabi', 'ubabo', 'ubabu', 'ubaby', 'ubeb', 'ubeba', 'ubebe', 'ubebi', 'ubebo', 'ubebu', 'ubeby', 'ubib', 'ubiba', 'ubibe', 'ubibi', 'ubibo', 'ubibu', 'ubiby', 'ubob', 'uboba', 'ubobe', 'ubobi', 'ubobo', 'ubobu', 'uboby', 'ubub', 'ububa', 'ubube', 'ububi', 'ububo', 'ububu', 'ububy', 'ubyb', 'ubyba', 'ubybe', 'ubybi', 'ubybo', 'ubybu', 'ubyby', 'ybb', 'ybba', 'ybbe', 'ybbi', 'ybbo', 'ybbu', 'ybby', 'ybab', 'ybaba', 'ybabe', 'ybabi', 'ybabo', 'ybabu', 'ybaby', 'ybeb', 'ybeba', 'ybebe', 'ybebi', 'ybebo', 'ybebu', 'ybeby', 'ybib', 'ybiba', 'ybibe', 'ybibi', 'ybibo', 'ybibu', 'ybiby', 'ybob', 'yboba', 'ybobe', 'ybobi', 'ybobo', 'ybobu', 'yboby', 'ybub', 'ybuba', 'ybube', 'ybubi', 'ybubo', 'ybubu', 'ybuby', 'ybyb', 'ybyba', 'ybybe', 'ybybi', 'ybybo', 'ybybu', 'ybyby']

This may do what you want: 这可能会做您想要的:

from itertools import product
s = 'wrld'
words = ['{}'.join(s).format(*v) for v in product(list('aeiou') + [''], repeat=len(s)-1)]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM