Python 查找具有最大元音的字符串

Python 查找具有最大元音的字符串,python,Python,我想在Python中找到最大元音的字符串,但我不知道如何找到 例子 输入 输出: ['Zak6aa'] 另一种情况是,如果两个或多个字符串的最大元音匹配: ['Zaa', 'bii','ak'] 输出为: ['Zaa', 'bii'] 我的尝试: def maxv(string): sam=0 seq=[] for i in range(len(string)): k=0 v=0 for char in string[

我想在Python中找到最大元音的字符串,但我不知道如何找到

例子 输入

输出:

['Zak6aa']
另一种情况是,如果两个或多个字符串的最大元音匹配:

['Zaa', 'bii','ak']
输出为:

['Zaa', 'bii']
我的尝试:

def maxv(string):
    sam=0
    seq=[]
    for i in range(len(string)):
        k=0
        v=0
        for char in string[i]:
             if char in "aeiouy":
                v = v+1
        k=(len(string[i]))-v
        if (v >=k):
            seq=seq+[string[i]]
    return seq

一个使用循环的解决方案

l=['Zak6aa','kak','ll','ak']
L={}
for x in l:
  cnt=x.count('a')+x.count('e')+x.count('i')+x.count('e')+x.count('u')
  if cnt not in L.keys():
    L[cnt]=[]
  L[cnt].append(x)
print(L[max(L.keys())])
您可以使用re统计元音出现的次数

您可以按元音的数量对它们进行排序:

l = ['Zak6aa','kak','ll','ak']
sorted(l, key=lambda x: sum(1 for y in x if y in 'aeiouAEIOU'), reverse=True)
['Zak6aa', 'kak', 'ak', 'll']
如果您需要使用相同的最大长度,您可以在排序前使用zip和元音数,然后只过滤较高的分数:

l = ['Zaa', 'bii','ak']
slist =sorted(zip(map(lambda x: sum(1 for y in x if y in 'aeiouAEIOU'), l), l), reverse=True)
filter(lambda x: x[0] == slist[0][0], slist)
[(2, 'bii'), (2, 'Zaa')]
谢谢大家

如何在Python中打印选择排序中的交换数? 例如 输出`

[1,2,3,4,5,6,7,9,8]

` 输入

一,

因为有一个9和8的交换

  def min(list, fromw):
      m = fromw
      for i in range(fromw + 1,len(list)):
          if list[i] < list[m]:
              m = i
      return m


def select(list):
    for promt in range(len(list)):
        where = min(list, promt)
        list[where], list[promt] = list[promt], list[where]
    return list

我试图以较低的复杂性解决这个问题:

sample_string="i am a sample string find word with maximum vowel"

length=len(sample_string)
count=0
max_count=0
word=""
max_word=""

for i in range(length):
    if(sample_string[i].isspace()):
        if(count>max_count):
            max_count=count
            max_word=word

    count=0
    word=""
elif(sample_string[i]=='a' or sample_string[i]=='e' or
     sample_string[i]=='i' or sample_string[i]=='o' or 
         sample_string[i]=='u'):
        count=count+1
    word=word+sample_string[i]
print(max_word)

如果cnt不在碱液中,也可以这样做。那就足够了。你如何调用你的函数?会发生什么?您可以尝试打印函数中的变量以了解发生了什么。
  def min(list, fromw):
      m = fromw
      for i in range(fromw + 1,len(list)):
          if list[i] < list[m]:
              m = i
      return m


def select(list):
    for promt in range(len(list)):
        where = min(list, promt)
        list[where], list[promt] = list[promt], list[where]
    return list
sample_string="i am a sample string find word with maximum vowel"

length=len(sample_string)
count=0
max_count=0
word=""
max_word=""

for i in range(length):
    if(sample_string[i].isspace()):
        if(count>max_count):
            max_count=count
            max_word=word

    count=0
    word=""
elif(sample_string[i]=='a' or sample_string[i]=='e' or
     sample_string[i]=='i' or sample_string[i]=='o' or 
         sample_string[i]=='u'):
        count=count+1
    word=word+sample_string[i]
print(max_word)