当前位置: 首页 > news >正文

Python练习(2)

重复元素判定续。利用集合的无重复性来编写一个程序如果有一个元素出现了不止一次则返回true但不要改变原来列表的值:

一:

def has_duplicates(lst):

    # 使用集合来存储已经见过的元素

    seen = set()

    

    for item in lst:

        if item in seen:

            # 如果元素已经在集合中,说明有重复

            return True

        # 将元素添加到集合中

        seen.add(item)

    

    # 如果循环结束还没有找到重复元素,返回False

    return False

 

# 示例列表

example_list = [1, 2, 3, 4, 5, 1]

 

# 检查是否有重复元素

result = has_duplicates(example_list)

 

print(result) # 输出: True

 

 

 

不用集合来写:

二:

 def has_duplicates(lst):
 # 创建一个新列表来存储已经遇到的元素(这里我们实际上可以用集合来优化,但为了保持纯列表方法,我们还是用列表)
 encountered = []
  
 # 遍历原始列表中的每个元素
 for item in lst:
 # 检查元素是否已经在遇到的元素列表中
     if item in encountered:
 # 如果已经在列表中,说明有重复元素
     return True
 # 否则,将元素添加到遇到的元素列表中
 else:
 encountered.append(item)
  
 # 如果遍历完列表都没有找到重复元素,返回False
 return False
  
 # 示例列表
 List = ['1', 'd', '2']
 # 检查是否有重复元素
 print(has_duplicates(List)) # 输出: False,因为List没有重复元素
  

运用字典来写:

三:

def has_duplicates(lst):
    # 使用一个字典来计数每个元素出现的次数
    count_dict = {}
    
    # 遍历列表中的每个元素
    for item in lst:
        # 如果元素已经在字典中,增加其计数
        if item in count_dict:
            count_dict[item] += 1
        # 否则,将元素添加到字典中,计数为1
        else:
            count_dict[item] = 1
        
        # 检查计数是否大于1,如果是,则返回True
        if count_dict[item] > 1:
            return True
    
    # 如果遍历完列表都没有找到重复元素,返回False
    return False

#但是上面的方法有一个效率问题:它在每次添加元素到字典后都检查计数。

# 我们可以优化它,只在遍历完成后检查是否有任何元素的计数大于1。

四:

def has_duplicates_optimized(lst):

    # 使用一个字典来计数每个元素出现的次数

    count_dict = {}

    

    # 遍历列表中的每个元素

    for item in lst:

        # 如果元素已经在字典中,增加其计数

        if item in count_dict:

            count_dict[item] += 1

        # 否则,将元素添加到字典中,计数为1

        else:

            count_dict[item] = 1

    

    # 检查字典中是否有任何元素的计数大于1

    for count in count_dict.values():

        if count > 1:

            return True

    

    # 如果没有找到重复元素,返回False

    return False

http://www.lryc.cn/news/496089.html

相关文章:

  • 如何实现一套键盘鼠标控制两台计算机(罗技Options+ Flow功能快速实现演示)
  • 现代应用程序中基于 Cell 架构的安全防护之道
  • 【导航查询】.NET开源 ORM 框架 SqlSugar 系列
  • 【基础分析】——Qt 信号和槽的机制 优点
  • Vue3学习宝典
  • leecode96.不同的二叉搜索树
  • 树莓派基本配置-基础配置配置
  • 手机卡限速丨中国移动5G变3G,网速500kb
  • SpringCloud之OpenFeign:OpenFeign与Feign谁更适合你的SpringCloud项目?
  • yt6801 ubuntu有线连接驱动安装
  • 算法日记 36-38day 动态规划
  • hdlbits系列verilog解答(Dff16e-同步复位上升沿16位触发器)-85
  • HTTPTomcatServlet
  • IDEA连接Apifox客户端
  • Linux的奇妙冒险——进程PCB第一讲
  • 阿里巴巴热土计划企划金:点燃贫困地区可持续发展的希望之火
  • 2-6 C浮点数指针运算案例
  • 开源的跨平台SQL 编辑器Beekeeper Studio
  • 07《缓存》计算机组成与体系结构 系列课
  • Java个人博客系统项目文档
  • 如何手动设置ubuntu服务器的ip、子网掩码、网关、DNS
  • SVN clean up失效的一种解决办法
  • S4 UPA of AA :新资产会计概览
  • 第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0
  • 关于单片机的原理与应用!
  • 什么是节点嵌入向量
  • 青海摇摇了3天,技术退步明显.......
  • url_launcher三方包的用法
  • Python 【图像分类】之 PyTorch 进行猫狗分类功能的实现(Swanlab训练可视化/ Gradio 实现猫狗分类 Demo)
  • springboot371高校实习管理系统(论文+源码)_kaic