首页 > 系统相关 >集合与内存

集合与内存

时间:2024-03-06 21:11:36浏览次数:20  
标签:11 22 33 print v1 v2 内存 集合

  1. 集合 set
  • 无序

  • 无重复

    v = {1,2,3,4,5,6,99,100}

    疑问:v = {}

    """
    None
    int
    v1 = 123
    v1 = int() --> 0
    bool
    v2 = True/False
    v2 = bool() -> False
    str
    v3 = ""
    v3 = str()
    list
    v4 = []
    v4 = list()
    tuple
    v5 = ()
    v5 = tuple()
    dict
    v6 = {}
    v6 = dict()
    set
    v7 = set()
    """

  1. 集合独有功能

    • add #添加
    • discard #删除
    • update #更新
    • intersection #取交集
    • union #取并集
    • difference #取差集
    • symmetric_difference
  2. 公共功能

    • len
      v = {1,2,'李邵奇'}
      print(len(v))
    • for循环
      v = {1,2,'李邵奇'}
      for item in v:
      print(item)
    • 索引【无】
    • 步长【无】
    • 切片【无】
    • 删除【无】
    • 修改【无】
  3. 嵌套问题
    # 1. 列表/字典/集合 -> 不能放在集合中+不能作为字典的key(unhashable)
    # info = {1, 2, 3, 4, True, "国风", None, (1, 2, 3)}
    # print(info)
    # 2. hash -> 哈希是怎么回事?
    # 因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。

    # 3. 特殊情况
    # info = {0, 2, 3, 4, False, "国风", None, (1, 2, 3)}
    # print(info)
    
    # info = {
    #     1:'alex',
    #     True:'oldboy'
    # }
    # print(info)
    
  4. 内存相关

  • 示例一
    v1 = [11,22,33]
    v2 = [11,22,33]

    v1 = 666
    v2 = 666
    
    v1 = "asdf"
    v2 = "asdf"
    
    # 按理 v1 和 v2 应该是不同的内存地址。特殊:
    1. 整型:  -5 ~ 256 
    2. 字符串:"alex",'asfasd asdf asdf d_asdf '       ----"f_*" * 3  - 重新开辟内存。
    
  • 示例二:
    v1 = [11,22,33,44]
    v1 = [11,22,33]

  • 示例三:
    v1 = [11,22,33]
    v2 = v1

    # 练习1 (内部修改)
    v1 = [11,22,33]
    v2 = v1 
    v1.append(666)
    print(v2) # 含 666
    
    # 练习2:(赋值)
    v1 = [11,22,33]
    v2 = v1 
    v1 = [1,2,3,4]
    print(v2)
    
    # 练习3:(重新赋值)
    v1 = 'alex'
    v2 = v1
    v1 = 'oldboy'
    print(v2)
    
  • 示例四
    v = [1,2,3]
    values = [11,22,v]

    # 练习1:
    """
    v.append(9)
    print(values) # [11,22,[1,2,3,9]]
    """
    # 练习2:
    """
    values[2].append(999)
    print(v) # [1, 2, 3, 999]
    """
    # 练习3:
    """
    v = 999
    print(values) # [11, 22, [1, 2, 3]]
    """
    # 练习4:
    values[2] = 666
    print(v) # [1, 2, 3]
    
  • 示例五
    v1 = [1,2]
    v2 = [2,3]

    v3 = [11,22,v1,v2,v1]
    
  • 查看内存地址
    """
    v1 = [1,2,3]
    v2 = v1
    v1.append(999)
    print(v1,v2)
    print(id(v1),id(v2))
    """

    """
    v1 = [1,2,3]
    v2 = v1
    print(id(v1),id(v2))
    v1 = 999
    print(id(v1),id(v2))
    """
    
  • 问题: == 和 is有什么区别?

    • == 用于比较值是否相等。
    • is 用于比较内存地址是否相等。

走你今儿

  • 列表
    • reverse
    • sort
  • 字典
    • get (*)
    • update
  • 集合
    • add
    • discard
    • update
    • intersection (*)
    • union
    • difference
    • .....
  • 特殊:
    • 嵌套:集合/字典的key
    • 空:None
    • 空集合:...
  • id
  • type
  • 嵌套的应用: (*)
    • 赋值
    • 修改内部元素:列表/字典/集合

标签:11,22,33,print,v1,v2,内存,集合
From: https://www.cnblogs.com/jhchena/p/18057593

相关文章

  • List集合
    ListList集合的特点有序、可重复、有索引。Listremove重载方法的细节List的remove方法有两个案例一publicstaticvoidmain(String[]args){List<Integer>integers=newArrayList<Integer>();integers.add(1);integers.add(2);intege......
  • Java集合
    Java集合Java分为单列数据集合和双列数据集合单列数据集合一次存取一个元素双列数据集合一次存取一对元素单列数据集合单列集合的祖宗(Collection)List系列集合:有序(按照添加的顺序存放)、可重复、有索引Set系列集合:无序、不可重复、无索引Collection接口方法其中......
  • C++ 释放vector内存
    释放vector内存的方法有多种,具体取决于使用vector的方式以及释放内存的目的。下面列举几种常见的释放vector内存的方法:1、清空vector调用vector的clear()方法可以清空vector中的元素,但是并不会释放vector所占用的内存空间。这意味着,如果之后还需要往vector中添加元素,ve......
  • C++ 如何快速清空vector以及释放vector内存?
    1、为什么需要主动释放vector内存vector其中一个特点:内存空间只会增长,不会减小,援引C++Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元......
  • Qt QVector数据清理和内存清理
    原因在处理大数据时,发现QVector直接用clear后台查看程序所占用的内存并没有下降QVector数据清理1QVector<int>example_vec;2example_vec.clear();QVector内存清理1QVector<int>example_vec;2example_vec.shrink_to_fit();//程序运行到此处时内存才被降下去QV......
  • List集合中的某个元素的求和
    第一种方式intsuma=list.stream().map(e->e.getAge()).reduce(Integer::sum).get();//求和System.out.println(suma);intmaxa=list.stream().map(e->e.getAge()).reduce(Integer::max).get();//最大System.out.println(maxa);intmina=list.stream().map(e->e.g......
  • 网页浏览器Chrome开发者调试工具-Memory(内存)
    前言全局说明网页浏览器Chrome开发者调试工具-Memory(内存)一、网页浏览器Chrome开发者调试工具-Memory(内存)内存面板,用于记录和分析页面占用内存的情况,如查看内存占用变化,查看JavaScript对象和HTML节点的内存分配。二、关闭标签页在标签页上右键,可以选择移除或移动......
  • 7 JVM运行时内存区域
    7JVM运行时内存区域​ JVM运行时内存区域主要包括五块:程序计数器、java虚拟机栈、本地方法栈、方法区、堆​ 上述五块区域也可以分为线程共享和线程不共享两部分线程共享区域:方法区方法区是存放基础信息的位置,主要包括三部分:类的元信息保存了所有类的基本信息运......
  • list集合转map 封装
    //list转map很多情况下,需要遍历2层for循环,时间复杂度为O(n的平方),可以借助转map,遍历循环一层for循环,需要的从map中取数据,提升速度,//map的时间复杂度为O(1)可忽略不计,一下是对list转map的封装publicstatic<T,K>Map<K,T>list2Map(List<T>list,Function<?superT......
  • C# 用foreach迭代集合时获取索引
    一般做法是循环外部定义index,内部累加值 staticvoidMain(string[]args){vararr=newList<string>(){"aaa","bbb","ccc"};varindex=0;foreach(varvalinarr){index++;Console.WriteLine($&quo......