Python 如何按元音和辅音对字符串背景词进行排序?

Python 如何按元音和辅音对字符串背景词进行排序?,python,string,list,for-loop,alternate,Python,String,List,For Loop,Alternate,因此,我必须创建一个程序,重写一个字符串背景词,并交替使用元音和辅音,如本例所示: ex_1: input -> 'abcdefi' output -> 'ifedacb' ex_2: input -> 'vblsdeloai' output ->'iladoselbv' 到目前为止我所做的: 我被困的地方 将最终列表转换为字符串 因此,我转换字符串backwords,而不是使用for来迭代每个字符,并将其与元音列表进行比较。如果在元音列表中,则将元音添加到新列表中

因此,我必须创建一个程序,重写一个字符串背景词,并交替使用元音和辅音,如本例所示:

ex_1: 
input ->  'abcdefi'
output -> 'ifedacb'
ex_2:
input -> 'vblsdeloai'
output ->'iladoselbv'
到目前为止我所做的: 我被困的地方 将最终列表转换为字符串 因此,我转换字符串backwords,而不是使用for来迭代每个字符,并将其与元音列表进行比较。如果在元音列表中,则将元音添加到新列表中,如果没有,则将元音添加到新列表中。
现在我被困在必须创建一个列表的部分,这个列表是由两个list-list-u元音和list-u辅音创建的。我现在不知道怎样才能使两者同时工作。zip函数使列表成为一个元组,我想我不能使用它。我是新来的,任何帮助都会很难受。如果你认为我可以用不同的方法解决这个问题,请随时告诉我我是编程新手,我现在不知道该怎么做。

你需要
itertools.zip\u longest
来快速浏览两个列表,其中一个空字符串为
fillvalue

''.join(map(lambda x: x[0] + x[1], zip_longest(list_vowels, list_consonants, fillvalue='')))
代码

from itertools import zip_longest

word = input('the word is: ')
b = word[::-1]
list_vowels = []
list_consonants = []
final_list = []
string = ''
vowels = ['a', 'e','i','o','u']

for i in b:
   if i in vowels:
       list_vowels.append(i)
   elif i not in vowels:
       list_consonants.append(i)

print(''.join(map(lambda x: x[0] + x[1], zip_longest(list_vowels, list_consonants, fillvalue=''))))

你缺少的一行是把你的两个元音和辅音列表变成一个压缩字符串。您可以使用
itertools.zip\u longest()
实现这一点

这是您需要的线路:

从itertools导入zip\u
''.join(''.join(x)表示最长的zip中的x(list_元音,list_辅音,fillvalue='')
[1]中的
:'vblsdeloai'
Out[1]:“iladoselbv”
  • 将字符拆分为元音和非元音

  • 把它们倒过来

  • 在本例中,使用
    zip_longest()
    将它们交错


  • 听起来zip就是你想要的-只要通过调用list函数将它转换成一个列表:list(zip(list_元音,list_辅音))我想确认一下
    abcdefi
    应该变成
    ifedacb
    对吗?您是否交换了最后2个字符?它是input->abcdefi then->ifedcba then->ifedacb如果没有更多的元音或辅音可供替换,则它会写入字符串的其余部分。是的,您是正确的,但是您编写了
    ifedabc
    (请注意最后两个字符的顺序)。我只是想确定一下我编辑了ty,告诉我为什么迭代两次而不是循环和附加到两个不同的列表?暂且不提这一点,
    list(filter(lambda c:c在元音中,s))
    真的比
    [c代表c在s中,如果c在元音中]
    好吗?我只是喜欢一种更实用的编码风格。这样代码对我来说就更清晰了。我不反对人们使用更程序化的风格。这就是我。尼斯:)你是用函数式语言编程,还是只在支持范例的语言中坚持函数式风格?我不使用函数式语言本身。我学习和实践这种风格是出于兴趣。我对这种风格很感兴趣,无论它在哪里得到支持,除了在一些环境中,它在其他方面更有效,例如MicroPython。那么,你知道关于这个主题的好资源吗?(Python/非函数式语言中的函数式编程):)
    for q in e
        string = string + e
    print (string)
    
    ''.join(map(lambda x: x[0] + x[1], zip_longest(list_vowels, list_consonants, fillvalue='')))
    
    from itertools import zip_longest
    
    word = input('the word is: ')
    b = word[::-1]
    list_vowels = []
    list_consonants = []
    final_list = []
    string = ''
    vowels = ['a', 'e','i','o','u']
    
    for i in b:
       if i in vowels:
           list_vowels.append(i)
       elif i not in vowels:
           list_consonants.append(i)
    
    print(''.join(map(lambda x: x[0] + x[1], zip_longest(list_vowels, list_consonants, fillvalue=''))))
    
    from itertools import zip_longest
    
    def split(s):
        vowels = ['a', 'e', 'i', 'o', 'u']
        return list(filter(lambda c: c in vowels, s)), \
               list(filter(lambda c: c not in vowels, s))
    
    def reverse_interleave(s):
        vowels, consonants = list(map(reversed, split(s)))
        return ''.join(
            map(lambda x: ''.join(x), 
                zip_longest(vowels, consonants, fillvalue='')))
    
    print(reverse_interleave('abcdefi'))
    print(reverse_interleave('vblsdeloai'))