Python列表查询代码异常求助:执行结果输出-1 None问题排查
问题原因拆解
咱们先揪出你代码里导致-1 None输出的两个核心问题:
- 判断逻辑完全错误:你写的
if n ==v是把目标数值n和整个列表v做相等比较——单个数字(比如13)怎么可能等于一整个列表呢?所以每次都会走else分支打印-1。 - 函数无返回值+重复打印:你的
search_list函数里直接打印结果,但没有设置return语句,默认会返回None。而你最后又写了print(search_list(v,13)),相当于先执行函数内部的print(-1),再打印函数的返回值None,于是就出现了-1 None的奇怪输出。
修正方案
下面给你两种实用的修正方式,按需选择:
方式一:函数内部直接处理打印
v = [13,26,27,29,59,62] def search_list(v, n): if n in v: # 用in操作符判断值是否在列表中,这是Python的标准写法 print(n) else: print(-1) search_list(v,13) # 直接调用函数就行,不用再套一层print
方式二:函数返回结果,外部负责打印(更符合Python函数设计规范)
这种方式让函数只做“查找返回”的单一职责,后续可以灵活处理结果(比如存变量、做计算,不只是打印):
v = [13,26,27,29,59,62] def search_list(v, n): # 用三元表达式简洁返回结果:存在就返回n,不存在返回-1 return n if n in v else -1 # 先获取结果,再打印 result = search_list(v,13) print(result)
补充小提示
in操作符是Python检查元素是否在序列(列表、元组等)里最简洁的方式,对于小规模列表完全够用;如果是超大规模列表,可以考虑先转成集合set(v),查找效率会提升到O(1)。- 尽量让函数保持单一职责:要么负责逻辑判断返回结果,要么负责输出展示,混在一起会让代码难维护、难复用。
内容的提问来源于stack exchange,提问作者Dennis joo
相关产品推荐
相关产品推荐

