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

Python实现输入列表名与元素统计出现次数及TypeError报错解决

错误根因

你通过input()方法获取到的列表名称是字符串类型,并非你预先定义的列表对象本身。比如你输入list_1时,变量getList的实际值是字符串"list_1",你直接把这个字符串传入函数调用count方法时,字符串的count方法要求传入的参数也是字符串,你传入了转换后的整数,因此触发类型不匹配报错。

修复方案

我们可以用字典建立列表名称和实际列表对象的映射关系,既安全也能快速匹配到对应的列表:

# 预先定义的列表
list_1 = [1, 2, 4, 2, 5, 6, 7, 3, 5, 6, 3, 2, 1, 7, 8, 9, 3, 6, 5, 3, 4]
list_2 = [12, 14, 13 , 11, 16, 15, 17, 18, 18, 19, 17, 15, 19, 11, 12, 14, 13]

# 建立列表名称和对象的映射
list_map = {
    "list_1": list_1,
    "list_2": list_2
}

def count_objects(wlist):    
    read_o = int(input("input object: "))
    print(f"元素出现次数为:{wlist.count(read_o)}")

# 获取用户输入后先匹配对应的列表
getList = input("input list: ")
if getList not in list_map:
    print("输入的列表名称不存在")
else:
    count_objects(list_map[getList])

改动说明

  • 新增了list_map字典,用来关联用户输入的列表名字符串和实际的列表变量
  • 增加了输入合法性校验,避免用户输入不存在的列表名称时报错
  • 调用函数时传入的是字典映射后的实际列表对象,不是原来的字符串变量

也可以直接用globals()[getList]获取全局变量对应的列表,但这种方式存在安全风险,不推荐生产环境使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:57:05