zoukankan      html  css  js  c++  java
  • Python【day 15-2】基本数据类型-dict tuple set

    ''''''
    '''
    变量的数据类型
    int str bool list
    5、字典 dict
        定义和写法:由{}表示,每个元素是key:value的键值对形式,元素间是逗号隔开
        特点:
            1、key是可哈希的-不可变类型(比如:int str tuple bool)
                value的类型是不限制的,可以存放任意数据类型
            2、字典是无序的,没有索引和切片
        常见操作:
            增
                1、dic[key] = value   #单个键值对添加,先建立一个空字典
                2、dic = {k1:v1,k2:v2} #一次添加多个键值对-字典的定义
                3、ret= dic.setdefault(key,value) #如果key已经存在,不会覆盖
                   #添加键值对,返回添加的value
                4、dic2 = dic.fromkeys(iterable,value) #iterable中每个元素共用一个value
                   dic2 = dict.fromkeys(iterable,value)  #类方法
                    #注意点1:会新产生一个新字典,原字典本身不会改变
                    #注意点2:fromkeys是一个类方法
    
            删
                1、pop
                    参数是key,删除key对应的元素-键值对,并且获取被删除元素的value
                2、popitem
                    参数是空,随机删除一个元素-键值对,并且获取被删除元素-键值对
                    注意:从表面看,是删除了字典的最后一个键值对,但是字典的key是无序的,所有还是随机的
                3、del
                    1、参数是key,删除key对应的元素-键值对
                    2、还可以直接删除整个字典,回收内存空间
                4、clear
                    清空字典的元素-键值对,变成空字典
            改
                1 dic[key] = 新value
                    根据key获取到字典的value,对value进行重新赋值
                2 update
                    dic1.update(dic2)
                    把字典2的元素依次添加到字典1
                    注意:如果字典2的key和字典1的key有相同的,会出现value的覆盖
            查-取值
    '''
    '''
                1 dic[key]
                    根据自定的key取value值,如果key不存在,就报错
                2 get
                    写法:字典.get(key[,value])
                    参数1是key,参数2是默认返回值(不写默认是None)
                    1、如果key存在,就返回字典中key对应的value
                    2、如果key不存在,不会报错,会返回参数2(参数2不写默认是None)
                        这一点上,健壮性强于dic[key]来取值
                3 setdefault  添加元素,并取值元素的value(key如果已经存在,不会覆盖)
                    写法:字典对象.setdefault(key1,value1)
                    参数1是新增加元素的key,参数2是新增加元素-键值对的value
                    1、将参数1和参数2作为新元素-键值对添加到字典对象
                        原字典对象添加了一个新元素-键值对
                    2、返回者是参数2,即获取新增加的value作为返回值-这个返回value1就是取值
                        (和pop的删除并返回被删除值有类似之处,
                          setdefault是添加并返回添加的value)
                    3、如果key1已经在原字典对象中存在了,新的键值对将无法添加,原字典对象保持不变
                        这里不会覆盖原字典对象的value
                        注意点:不会覆盖这个点和dic[key]=value,如果key已经存在,会覆盖,是不同的
    
            字典for循环:
                1、iterable
                    dic1 dic1.keys() dic1.values()
                2、for i in dic1:
                       print(i,dic1[i])
    
                    for i in dic1.keys():
                        print(i,dic1[i])  #用的比较少
    
                    for i in dic.values():
                        print(i)  #适用场景:比如求value的平均值
    
                    for i in dic1.items():
                        print(i)  #这里返回是列表,列表的元素是键值对元组 (k1,v1)
    
                    for k,v in dic1.items():
                        print(k,v)
    
    6 元组--tuple
        1、元组是只读的,不可变
            不可变的是元组的第一层
            如果元组的元素是列表,列表是可以添加删除元素的
        2、操作方法比较的少
            count()
            index()
            len()
        3、iterable-可迭代的
            支持for循环
            (for循环的取值速度:dict>set>list>tuple)
        4、元组是没有元组推导式的
    
    7 集合-set
        1、集合的概念:只有key的字典
        2、特点:
            无序
            去重
            元素是不可变的(可哈希的)--因为字典的key是不可变的
        3、支持for循环,iterable
        4、可冻结的集合 frozen
            特点:frozen本身是不可变的(可哈希)
        5、操作
            两个集合之间可以& | -  (交集&、并集|、差集)等
        6、备注:
            set不能作为字典的key
            frozetkey作为字典的key
    '''
    '''''
    '''
    一、条件判断、循环
    1 条件判断if
        if 条件:
            代码块(语句块)
        elif 条件:
            代码块
        elif 条件:
            代码块
        。。。
        else:
            代码块
    2 循环
        1 while循环(条件循环)
            while 条件:
                循环体
                break (结束整个循环-本层,如果是2层循环,只能跳出1层,不能跳出2层)
                continue(结束本次循环-迭代,继续执行下一次循环)
            else:
                pass #当上面的while正常结束后(条件是False的时候,没有出现break),才执行这个语句
    
        2for循环--主要用于循环遍历取值
    
    3 print
        print(message,end='
    ',sep=' ')
        参数1:打印输出的信息
        参数2:行结束符,不写默认是换行 
    
        参数3:分隔符,不写默认是空格
               注意点:打印2个及以上元素,才会用到分隔符,打印一个元素,是用不到分隔符的
    
    4 input  用户交互
    5 range
        range(start,end,step) --range和切片的区别,分隔符不同,前者是逗号,后者是冒号
        #step不写,默认是1
        切片:li1(start:end:step)
    
    6 文件路径的分隔符
        win     反斜杠-捺杠  还表示转义 	 
     
    
        linux /  顺斜杠-撇杠
    
    二、运算符
    1、算数运算符
        + - * / // % **
    
    2、比较运算符
        > >= < <= == !=
    
    3、逻辑运算符
        and-与  两个同时为真,结果才是真
        or-或   两个中有一个是真,结果就是真
        not-非  非假即真 非真即假
    
        优先级顺序:  小括号() >not > and >or
    
        a and b
            如果a不是0,返回b
            如果a是0,返回a
    
        a or b
            如果a不是0,返回a
            如果a是0,返回b
    
    4、赋值运算符
        += -= *= /= %=
        a+=b 等价于 a = a+b
    
    5、成员运算符
         x in xx
         比如:判断列表或者字典的元素
    
    6、is和==
        is比较的是内存地址
        ==比较的是值
        小数据池:int str bool这三种类型的对象创建之后,符合规则的,会被缓存到小数据池
                  下次直接从小数据池中调用,从而节省内存
                  比如:a1='jack'  a2='jack'
                  在创建变量a1的时候,会新开辟一个内存空间,这个内存空间的名字是a1,里面的值存的是'jack'
                        且把这个内存空间缓存到小数据池子中
                  在创建变量a2的时候,不会新开辟另外一个内存空间,而是把a2指向'jack'所在的内存地址
                  即a1和a2的内存地址是一样的
    
    7、文件操作
        open(文件路径,mode='模式',encode='编码')
        模式: r w a r+ w+ a+ rb wb ab
        for循环可以迭代文件句柄,拿到的是一行一行的内容
        seek(0,0) #光标移到文件开头  参数1是偏移量 参数2中:0表示文件开头,1表示文件当前位置,2表示文件末尾
        seek(0,2) #光标移到文件末尾
        seek(0,1) #光标移到当前位置
        tell()  #打印光标的当前位置
    
        with open(文件路径,mode='模式',encode='编码') as f:
            pass   #不需要flush和close
    
        文件修改:
            打开源文件,从源文件中读取内容到内存,修改,然后将内容写入到新文件。
            删除源文件,把新文件重命名成源文件的名字
  • 相关阅读:
    ES elasticsearch 段合并
    xtrabackup VS clone plugin
    MySQL排序揭秘
    PostgreSQL体系结构和基本操作
    ES elasticsearch refresh和flush的区别
    MySQLMGR(一)
    redis一键创建脚本
    vs2010 安装无法打开deffactory.dat解决办法
    FeatureLayer,FeatureDataset,FeatureClass,Feature几个概念总结
    http://www.cnblogs.com/secenes/archive/2008/05/15/1198933.html
  • 原文地址:https://www.cnblogs.com/wangtp/p/11880516.html
Copyright © 2011-2022 走看看