Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python简单地为每个辅音添加组合元音_Python_String_Algorithm - Fatal编程技术网

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

如何使用Python简单地为每个辅音添加组合元音,python,string,algorithm,Python,String,Algorithm,我想从字符串中每个辅音的加法元音中得到组合 比如说 string = "wrld" 结果如下: { "warld","wirld,"wurld","werld","world","warald","warild",.....,"worolode","worolodo"} 我们将设置元音,包括表示相邻辅音的空字符串。然后我们将使用它来获得所有大小合适的元音组合。然后我们用它来交织元音和辅音。最后,我们使用'.join()将它们重新组合成单词 import itertools vowels =

我想从字符串中每个辅音的加法元音中得到组合

比如说

string = "wrld"
结果如下:

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

我们将设置元音,包括表示相邻辅音的空字符串。然后我们将使用它来获得所有大小合适的元音组合。然后我们用它来交织元音和辅音。最后,我们使用
'.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)
例如:

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

我们将设置元音,包括表示相邻辅音的空字符串。然后我们将使用它来获得所有大小合适的元音组合。然后我们用它来交织元音和辅音。最后,我们使用
'.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)
例如:

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

这可能会满足您的要求:

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

这可能会满足您的要求:

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

你试过什么?你试过什么?