首页 > 编程语言 >python中的set()

python中的set()

时间:2024-12-31 10:52:42浏览次数:11  
标签:输出 set nums python 元素 集合 print

在 Python 中,set() 是用来创建集合的内置函数。集合是一个无序且不重复的元素集合,在 LeetCode 刷题中经常用来处理去重、集合操作(如交集、并集、差集)、快速查找等问题。

基本特性

  1. 无序性:集合中的元素没有顺序。
  2. 不重复性:集合会自动去除重复元素。
  3. 可变性:集合本身可以修改,但其中的元素必须是可哈希的(如字符串、数字、元组等)。

常见用法和语法

1. 创建集合

  • 空集合
    s = set()  # 空集合,注意 {} 是空字典
    print(s)  # 输出: set()
    
  • 通过列表或字符串创建
    s = set([1, 2, 2, 3])
    print(s)  # 输出: {1, 2, 3}
    
    s = set("leetcode")
    print(s)  # 输出: {'l', 'e', 't', 'c', 'o', 'd'}
    

2. 集合操作

  • 添加元素
    s = {1, 2, 3}
    s.add(4)
    print(s)  # 输出: {1, 2, 3, 4}
    
  • 删除元素
    s = {1, 2, 3}
    s.remove(2)  # 若元素不存在会报错
    s.discard(4)  # 若元素不存在不会报错
    print(s)  # 输出: {1, 3}
    
  • 清空集合
    s.clear()
    print(s)  # 输出: set()
    

3. 集合判断操作

  • 检查元素是否存在
    s = {1, 2, 3}
    print(1 in s)  # 输出: True
    print(4 in s)  # 输出: False
    
  • 检查子集或超集
    a = {1, 2}
    b = {1, 2, 3}
    print(a.issubset(b))  # 输出: True
    print(b.issuperset(a))  # 输出: True
    

4. 集合间运算

  • 交集
    a = {1, 2, 3}
    b = {2, 3, 4}
    print(a & b)  # 输出: {2, 3}
    print(a.intersection(b))  # 输出: {2, 3}
    
  • 并集
    print(a | b)  # 输出: {1, 2, 3, 4}
    print(a.union(b))  # 输出: {1, 2, 3, 4}
    
  • 差集
    print(a - b)  # 输出: {1}
    print(a.difference(b))  # 输出: {1}
    
  • 对称差集(非共有元素)
    print(a ^ b)  # 输出: {1, 4}
    print(a.symmetric_difference(b))  # 输出: {1, 4}
    

5. 集合推导式

类似列表推导式,但用于创建集合。

s = {x**2 for x in range(5)}
print(s)  # 输出: {0, 1, 4, 9, 16}

LeetCode 中常用场景

  1. 去重

    nums = [1, 2, 2, 3, 4, 4]
    unique = set(nums)
    print(unique)  # 输出: {1, 2, 3, 4}
    
  2. 查找重复元素

    nums = [1, 2, 3, 4, 3]
    seen = set()
    for num in nums:
        if num in seen:
            print("Found duplicate:", num)  # 输出: Found duplicate: 3
        seen.add(num)
    
  3. 检查两个数组的交集

    nums1 = [1, 2, 2, 3]
    nums2 = [2, 3, 4]
    result = list(set(nums1) & set(nums2))
    print(result)  # 输出: [2, 3]
    
  4. 检查唯一字符

    s = "leetcode"
    print(len(s) == len(set(s)))  # 输出: False (有重复字符)
    
  5. 找到数组中的缺失数字

    nums = [0, 1, 3]
    n = len(nums)
    missing = set(range(n+1)) - set(nums)
    print(missing.pop())  # 输出: 2
    
  6. 判断单词能否由集合中的字母拼出

    word = "apple"
    letters = {'a', 'p', 'l', 'e'}
    print(set(word).issubset(letters))  # 输出: True
    

效率优势

  • 集合的查找和添加操作时间复杂度为 ( O(1) ),适合用于快速判断某元素是否存在。
  • 集合操作(交集、并集、差集)在处理大规模数据时效率高。

在 LeetCode 中,使用集合可以显著优化代码性能,特别是在涉及重复检查、集合操作的题目中。

标签:输出,set,nums,python,元素,集合,print
From: https://www.cnblogs.com/lmc7/p/18643493

相关文章

  • Python selenium 爬虫设置
    Linux服务器上可以使用Selenium来进行网页爬取。为了在Linux服务器上使用Selenium,通常需要做一些额外的配置,特别是与浏览器和浏览器驱动的兼容性相关配置步骤安装Selenium:你需要确保安装了Selenium库。可以使用以下命令来安装:pipinstallselenium安装浏览器驱......
  • X00119-SDN下移动边缘计算市场中的智能动态数据卸载python实现
    软件定义网络(SDN)和移动边缘计算(MEC),能够动态管理和满足终端用户的计算需求,已经成为5G网络的关键使能技术。此项目研究了在多MEC服务器和多终端用户环境下,终端用户选择MEC服务器及其数据卸载的联合问题,以及MEC服务器的最优定价问题。SDN技术提供的灵活性和可编程性使得所提框架的实......
  • 步进电机驱动器A4988SETTR-T应用原理图设计
    一、A4988SETTR-T简介:        A4988SETTR-T是一款完整的微步进电机驱动器与内置的转换器,易于操作。它被设计用于在全步、半步、八步和十六步模式中操作双极步进电机,输出驱动容量高达35V和±2A。                A4988SETTR-T包括一个固定的断时电流......
  • Python 使用装饰器 decorator 修改函数行为
    Python使用装饰器decorator修改函数行为使用装饰器修改函数行为使用带有返回值和参数的被装饰函数创建一个可以接受参数的装饰器使用多个装饰器使用装饰器修改函数行为Python中装饰器(decorator)的概念基于Decorator设计模式,这是一种结构化设计模式。此模式允许......
  • 请说说在css中font-feature-settings属性有作用?
    font-feature-settings是一个CSS属性,用于控制在OpenType字体中启用或禁用的特定字体特性。这个属性提供了一种方式来访问那些不经常通过其他CSS属性(如font-variant或text-transform)直接暴露的、更高级的字体特性。OpenType字体可以包含许多额外的特性,这些特性可以改变......
  • python-nmap实现python利用nmap扫描分析
    目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异步扫描python-nmap的源码分析前言Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里。可以使用python-nmap这个python库,它提供了一个简单的接口来使用nmap进行扫描。python-nmap的基本使用在......
  • python蓝桥杯刷题4
    1.好数题解:首先分析题目要求奇数位上的数字是奇数,偶数位上的数字是偶数。开始解题,定义一个count变量为0,输入一个数字,for循环从1开始遍历到n+1,定义一个x作为一会的判断条件,将数字转换为字符串的形式,使用len函数计算出它的长度,作为坐标,坐标是从0开始到num1的长度。根据坐标去判......
  • Python 代码实现生命之轮Wheel of life
    最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用Python创建生命倒计时图表,珍惜时间,活在当下。生命之轮(Wheeloflife),这一概念最初由SuccessMotivation®Institute,Inc.的创始人PaulJ.Meyer提出,生命之轮使人能够根据此刻的价值观、愿景和优先事项,规划......
  • python的collections包
    collections模块是Python标准库的一部分,提供了多种用于处理集合数据结构的工具,其中defaultdict是一个非常常用的容器类。它是字典的一个子类,可以在访问不存在的键时返回一个默认值,而不是抛出KeyError异常。除此之外,collections模块还提供了许多类似于defaultdict的工......
  • python中的可不可变,可不可哈希,可不可修改
    在Python中,可不可变性、可不可哈希性、以及是否支持修改是理解数据类型行为的关键。以下是对这些特性的详细分析,包括定义、例子和它们之间的联系。1.可变性vs不可变性定义可变性:可变类型的数据可以直接修改,而不会改变其引用(内存地址)。不可变性:不可变类型的数据在创建后......