欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python【day 15-2】基本数据类型-dict tuple set

程序员文章站 2022-05-18 20:07:46
'''''' ''' 变量的数据类型 int str bool list 5、字典 dict 定义和写法:由{}表示,每个元素是key:value的键值对形式,元素间是逗号隔开 特点: 1、key是可哈希的-不可变类型(比如:int str tuple bool) value的类型是不限制的,可以存... ......
''''''
'''
变量的数据类型
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='\n',sep=' ')
    参数1:打印输出的信息
    参数2:行结束符,不写默认是换行 \n
    参数3:分隔符,不写默认是空格
           注意点:打印2个及以上元素,才会用到分隔符,打印一个元素,是用不到分隔符的

4 input  用户交互
5 range
    range(start,end,step) --range和切片的区别,分隔符不同,前者是逗号,后者是冒号
    #step不写,默认是1
    切片:li1(start:end:step)

6 文件路径的分隔符
    win  \   反斜杠-捺杠  \还表示转义 \t \r \n
    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

    文件修改:
        打开源文件,从源文件中读取内容到内存,修改,然后将内容写入到新文件。
        删除源文件,把新文件重命名成源文件的名字

 

上一篇: 数位dp

下一篇: 虚函数探秘