You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python入门:如何用基础方法获取列表中元音数最多的前三个国家

适合Python新手的实现方案

你现有代码存在一个逻辑问题:最后返回值用了硬编码的countries[234],没有用到前面计算得到的最大值下标location_most_vowel,可以先把这个问题修正。

不需要用到nlargest这类进阶方法,只用你已经学过的for循环和基础内置函数就可以实现需求,核心思路如下:

  • 先遍历所有国家,将「国家名称」和「对应元音数量」成对存储为元组,生成一个新的统计列表
  • 循环三次,每次从统计列表里找出元音数最大的条目,加入结果列表后,把该条目从统计列表中移除,避免重复选取
  • 最终返回收集到的三个结果即可

实现代码如下:

def top_three_most_vowels(countries):
    vowels = ["A", "a", "E", "e", "I", "i", "O", "o", "U", "u"]
    # 第一步:生成(元音数量, 国家名)的统计列表
    country_vowel_counts = []
    for country in countries:
        vowel_count = len(set(country).intersection(set(vowels)))
        country_vowel_counts.append( (vowel_count, country) )
    
    # 第二步:循环三次取最大的三个值
    top_three = []
    for _ in range(3):
        # 找当前列表里的最大值
        current_max = max(country_vowel_counts)
        # 加入结果列表
        top_three.append(current_max[1])
        # 从统计列表移除已经选过的最大值,避免重复选
        country_vowel_counts.remove(current_max)
    
    return top_three

代码说明

  • 用到的都是Python基础语法:for循环、元组、max()函数、list.remove()方法,都是入门阶段会覆盖的内容
  • 如果要处理并列排名的情况也可以基于这个逻辑扩展,比如遍历统计列表把所有和当前最大值相等的条目都取出来,直到凑够三个为止
  • 如果希望返回结果同时带元音数量,把current_max[1]改成current_max即可

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:54:02