当前位置: 首页> 汽车> 新车 > 招代理_网页传奇霸主高手攻略_北京如何优化搜索引擎_千锋教育的真实性

招代理_网页传奇霸主高手攻略_北京如何优化搜索引擎_千锋教育的真实性

时间:2025/7/9 4:08:17来源:https://blog.csdn.net/Ambition_ZM/article/details/147289118 浏览次数: 0次
招代理_网页传奇霸主高手攻略_北京如何优化搜索引擎_千锋教育的真实性

编写一个程序,用于在一组整数中找出唯一的数字。假设列表中只有一个唯一的数字。

定义函数find_unique_number(),参数为num_list,数字列表。
在函数内部,找出只出现一次的数字,并返回它。
如果列表只有一个数字,则返回该数字。
如果列表为空,则返回None。
如果不存在这样的数字,则返回None。

传统写法:

def find_unique_number(num_list):# 此处编写你的代码 count={}for num in num_list:count[num]=count.get(num,0)+1unique_list=[]for num,cnt in count.items():if cnt==1:unique_list.append(num)return unique_list[0] if len(unique_list)==1 else None# 将输入的整数转换为列表
numbers = list(map(int, input().split()))# 调用函数
print(find_unique_number(numbers))

代码说明:


# 将输入的整数转换为列表
numbers = list(map(int, input().split()))
input():获取用户输入字符串
.split():按空格分割字符串为列表
map(int, ...):将列表中的每个元素转换为整数
map(func, iterable) 的含义:
对第二个参数 iterable(可迭代对象)中的每个元素,使用第一个参数 func(函数)进行处理。
此处将列表中的每个字符串应用 int() 函数,尝试转为整数
list(...):将迭代器转换为列表
map 函数返回的是一个迭代器(Iterator),而不是列表。
list() 的作用是将迭代器的所有元素提取出来形成列表。完整流程总结
输入
用户输入:"1 3 5 7"
字符串分割
input().split() → 得到 ["1", "3", "5", "7"]
类型转换
map(int, ["1", "3", "5", "7"]) → 遍历转换为整数 1, 3, 5, 7
生成列表
list(...) → 生成最终列表 [1, 3, 5, 7]
结果赋值
numbers 变量被赋值为 [1, 3, 5, 7]

等效代码(用列表推导式改写)

numbers = [int(x) for x in input().split()]
对比说明:
map 在某些场景下效率更高,
而列表推导式通常可读性更好,两者最终结果相同。

列表推导式

def find_unique_number(num_list):if not num_list:return Noneif len(num_list) == 1:return num_list[0]count = {}for num in num_list:count[num] = count.get(num, 0) + 1# 根据题目条件,预期只有一个唯一值,因此返回第一个或仅有的出现一次的数值# 若存在多个出现一次的情况,根据题意返回Noneunique_numbers = [num for num, cnt in count.items() if cnt == 1]return unique_numbers[0] if len(unique_numbers) == 1 else None

代码说明:

  • 边界处理

当输入列表为空时直接返回None
当列表仅有一个元素时无需遍历,直接返回该元素

  • 统计频次

使用字典存储每个数字的出现频次,count.get(num, 0)方法确保首次访问时初始化为0
时间复杂度为O(n),可处理大规模数据

  • 精准匹配

通过列表推导式筛选出现一次的数值,存储到unique_numbers
根据题意中"列表中只有一个唯一的数字"的约束条件,仅在筛选结果数量严格为1时返回该数值,否则返回None
在这里插入图片描述
count[num] = count.get(num, 0) + 1
在这里插入图片描述
为什么要用 get(num, 0) 而不是直接访问字典?
假设直接写 count[num] + 1:

  • 如果 num 不在字典中 → 会引发 KeyError(例如首次遇到数字2时,count[2] 不存在)。
  • 使用 .get(num, 0) 可以规避此问题:当 num 不在字典中时,会安全地返回 0,使得逻辑可以正常运行。
    传统写法
count = {}
for num in num_list:if num in count:    # 如果数字已存在count[num] += 1 # 出现次数+1else:            count[num] = 1  # 首次记录1次
关键字:招代理_网页传奇霸主高手攻略_北京如何优化搜索引擎_千锋教育的真实性

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: