zoukankan      html  css  js  c++  java
  • 19-3-7Python中小数据池、数据类型的补充、set集合

    一、小数据池(了解)

    “id”    获取内存地址

    “==”  比较等号两端的值是否相等

    “is”    身份运算:判断的是两个对象的内存地址是否相同。

    代码块:一个文件就是一个代码块。(函数、类都是代码块)

                  交互命令中一行就是一个代码块

    同一个代码块:同一代码块的缓存机制,驻留机制的目的:1. 节省内存空间,2提高性能

    驻留机制针对的对象: int bool str

    符合驻留机制 int 所有

    Str 几乎所有

    通过相乘的形式构建的字符串长度不能超过20满足同一代码块的驻留机制。

    Bool 以1,0存在,复用

    不同的代码块小数据池:

           前提:针对不同代码块之间的缓存机制。

           针对对象:int bool str ()空元组

    总结:如果在同一代码块下,则采用同一代码块下的换缓存机制。

                  如果是不同代码块,则采用小数据池的驻留机制。

    二、数据类型的补充

    数据类型之间的转换

           Int bool str 三者转换是可以的。

           Bool可以与所有的数据类型进行转换。

           所有为空的数据类型转换成bool都为Fasle.

                  Str ---à list split 分割

                  List--àstr join  list里面的元素全部都是str类型

                 

                  Str--àtuple

                  Tuple--àstr join

                  List---àtuple

                  Tuple_--àlist

                  Dict---àlist

                  Set list 转换

    补充:

           Tuple:如果元组中只有单个元素,并且没有,则类型是元素本身的类型。

           Dict 

    集合:set

    实际上就是一种特殊的字典.

    所有value都是None的字典,就是集合.

    对比字典和集合的特点:

    字典

    集合

    Key唯一

    元素唯一

    Key可以哈希

    元素可以哈希

    Key无序

    元素无序

    如何获取集合?

    1.手动创建集合.

    1.创建空集合

    d = {}

    创建空集合,只有一种方式:调用set函数.

    S = set()

    2.创建带元素集合

    S = {1,2,3}

    从可迭代对象中(字符串,列表,元组,字典)创建集合.

    s = set(‘abc’)

    S = set([1,2,3])

    S = set((1,2,3))

    S = set({‘name’:’Andy’,’age’:10})

    2.通过方法调用

    -> str

    -> list

    -> set

    集合的操作:

    查看集合可用的方法:

    [x for x in dir(set) if not x.startswith(‘_’)]

    ['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

    增:

       add:如果元素存在,没有做任何动作.

    删:

    Pop()     :依次从集合中弹出一个元素,如果集合为空,报错

    Discard(ele) :从集合中删除指定的元素,如果不存在,什么都不执行

    Remove(ele)  :从集合中删除指定的元素,如果不存在,报错

    Clear()      :清空

    集合的四大常用操作:

    并集:union

    交集:intersection

    差集:difference

    对称差:symmetric_difference

    改(更新):

    Update :用二者的并集更新当前集合

    difference_update:用二者的差集更新当前集合

    intersection_update:用二者的交集更新当前集合

    symmetric_difference_update:用二者的对称差集更新当前集合

    判断功能:

    Isdisjoint:判断两个集合是否没有交集

    Issubset:判断当前集合是否是后者的子集

    Issuperset:判断后者是否是当前集合的子集

    集合基本没有单独取其中元素的需求.

    集合的使用场景:

    1.判断一个元素是否在指定的范围之内.

    2.方便数学上的集合操作.

    并,交,差,对称差

    有简化写法:

    并:|

    交:&

    差:-

    对称差:^

    3.对序列数据类型中的重复元素进行去重

    如果想遍历集合中的元素.

    通常用for循环.

    frozenset:冻结的集合

    最大的特点:不可变.

    ['copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']

    少了添加,更新的方法.

    s = frozenset()

    s = frozenset('abcabc')

    s = frozenset([1,2,3])

    s = frozenset((1,2,3))

    s = frozenset({'name':'Andy','age':10})

    集合的四大方法:并,交,差,对称差.

    set,frozenset是否可以混用?

    可以!

    总结:

    如果两种数据类型混用,方法的主调者的类型决定了最终结果的类型.

    frozenset应用场景:

    凡是使用到不可改变的数据的场景,都是可以使用frozenset的.

    set集合的元素:必须是可以哈希的,set本身不是可以哈希.

    但是frozenset是不可变的数据.(可以哈希的),它是可以放到集合中.

    set和frozenset可以互相转换.

  • 相关阅读:
    Android WebView重定向问题的解决方案
    Android 控件背景选择图片还是drawable XML资源
    Android AlertDialog 绝对位置计算
    Android 5.0以上Material Design 沉浸式状态栏
    Android 6.0系统动态请求系统相机权限
    Android软键盘在清单文件中所有配置含义
    Android,TextView的所有属性和方法
    【转载】Android控件属性大全
    Android布局及控件的属性说明
    android带有文字的图片按钮的两种实现方式
  • 原文地址:https://www.cnblogs.com/1oo88/p/10492374.html
Copyright © 2011-2022 走看看