day08 数据类型总结 文件操作

上节课复习:

  1、队列与堆栈

    队列:先进先出FIFO    例如:排队

    堆栈:后进先出LIFO    例如:叠衣服

  2、字典

  3、setdefault

day08  数据类型总结  文件操作
温故知新:
Python 字典 setdefault() 方法和 get() 方法类似, 如果 key 在 字典中,返回对应的值。
如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。
d = {'name':'egon','age':18,'gender':'xxx'}
d.setdefault('gender','male')   # {'name': 'egon', 'age': 18, 'gender': 'xxx'}
d.update({'gender':'male'})       #{'name': 'egon', 'age': 18, 'gender': 'male'}
print(d)
res = d.setdefault('gender','male')   # xxx
print(res)
View Code

今日内容

  一、集合类型

         数据类型总结

  二、文件处理

    1、什么是文件

    2、为何要用文件

    3、如何用文件

一、集合

1、用途:

  去重:

    (1) 无法保证顺序

msg = 'hello'
res = set(msg)
print(''.join(res))    # oehl

    (2) 只能针对不可元素去重

day08  数据类型总结  文件操作
student_info = [
    {'name':'egon','age':18,'gender':'male'},
    {'name':'tom','age':19,'gender':'male'},
    {'name':'jack','age':38,'gender':'male'},
    {'name':'egon','age':18,'gender':'male'},
    {'name':'egon','age':18,'gender':'male'},
]

new_l = []
for info in student_info:
    if info not in new_l:
        new_l.append(info)
print(new_l)

>>>:
[{'name': 'egon', 'age': 18, 'gender': 'male'},
{'name': 'tom', 'age': 19, 'gender': 'male'},
{'name': 'jack', 'age': 38, 'gender': 'male'}]
View Code

  关系运算

2、定义方式:在{}内用逗号分隔开多个元素,集合内元素的特征有三个:

  (1)集合内元素必须是不可变元素

  (2)集合内元素不能重复

  (3)集合内元素无序

s = {11,11,22,33,33} # s = set(...)
print(s)             # {33, 11, 22}
print(type(s))       # <class 'set'>

数据类型转换

res = set('hello')
print(res)           # {'l', 'o', 'e', 'h'}
# 定义一个空集合
s = set()
print(type(s))         # <class 'set'>

3、常用操作+内置方法

优先掌握的操作:

day08  数据类型总结  文件操作
1、长度len
s1 = {1,2,3}
print(len(s1))   # 3
2、成员运算in和not in
s1 = {1,2,3}
print(3 in s1)       # True
print(3 not in s1)   # False

1、|并集(合集):两个集合并到一起
2、&交集:取两个集合的共同部分
3、-差集:一个集合减掉与另一个集合共同的部分
4、^对称差集(交叉补集):求两个集合互相减,然后再并到一起
5、==
6、父集:>,>=  当一个集合完全包含了另外一个集合,该集合才能称为爹
s1 = {1,2,3}
s2 = {4,5,6}
print(s1 >= s2)   # False
print(s1.issuperset(s2))
7、子集:<,<=
print(s1 <= s2)   # False
print(s1.issubset(s2))

举例:
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}

list1 = pythons | linuxs   # {'egon', 'yuanhao', 'wupeiqi', 'oldboy', 'biubiu', 'gangdan', 'alex'}
print(pythons.intersection(linuxs))
print(pythons.intersection_update(linuxs))

list2 = pythons & linuxs   # {'wupeiqi', 'gangdan'}
print(pythons.union(linuxs))

list3 = pythons - linuxs   # {'yuanhao', 'alex', 'egon', 'biubiu'}
print(pythons.difference(linuxs))

list4 = linuxs - pythons   # {'oldboy'}
print(linuxs.difference(pythons))

list5 = pythons ^ linuxs   # {'egon', 'oldboy', 'yuanhao', 'biubiu', 'alex'}
print(pythons.symmetric_difference(linuxs))
View Code

需要掌握的操作:

day08  数据类型总结  文件操作
s1 = {1,2,3}

# 1、s1.update()
s1.update({3,4,5})
print(s1)    # {1, 2, 3, 4, 5}

# 2、s1.add()
s1.add(4)
print(s1)      # {1, 2, 3, 4}

# 3、删除
# 3.1  remove(3)
s1.remove(3)
print(s1)       # {1, 2}
# 3.2  pop()
res =  s1.pop()   # 随机删除 返回删除的值
print(s1)
print(res)
# 3.3  discard()
s1.discard(444444)   # 删除不存在的元素不会报错
print(s1)    # {1, 2, 3}
# 3.4  clear()
s1.clear()
print(s1)      # set()

# 4、copy
res = s1.copy()
print(res)      # {1, 2, 3}

# 5、isdisjoint()
s1 = {1,2,3}
s2 = {4,5,6}
print(s1.isdisjoint(s2))  # True
View Code

该类型总结:

存多个值  无序  可变  

数据类型总结:

数字
字符串
集合:无序,即无序索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存储相关信息,可变,需要处理数据的增删改
字典:无序,需要key与value映射的相关信息,可变,需要处理数据的增删改

  按存值个数区分:

               

标量/原子类型       数字,字符串
容器类型 列表,元组,字典,集合

                       按照可变不可变区分:

可变 列表、字典
不可变

数字、字符串、元组

                       按访问顺序区分:

直接访问 数字
顺序访问(序列类型) 字符串,列表,元组
key值访问(映射类型) 字典

 二、文件处理

1、什么是文件

  文件时操作系统提供给用户或者应用程序操作硬盘的一种机制

       python中文件是对象

       Linux文件:一切设备都可以看成是文件

       文件的作用:把一些数据以文件的形式存储起来,文件由文件系统进行管理,当程序下一次执行的时候,通过文件系统快速找到对应的文件,而找到对应的数据,省时省力。

2、为何要用文件

  读写文件 ---> 存取硬盘

 

  应用程序:  open()

  操作系统:  打开文件

  计算机硬件:  硬盘空间

3、如何用文件

  1)打开文件

    方式一:open

# encoding指定字符编码表
f = open(r'a\a.txt',mode ='rt',encoding='utf-8')
# f的值 ---> 文件句柄,文件对象
res = f.read()
print(res)
f.close() # 回收操作系统的资源

 

    方式二:with open

with open(r'a\a.txt',mode = 'rt',encoding = 'utf-8') as f:
    res = f.read()
print(res)

  2)读/写

  要了解文件读写模式,需要了解几种模式的区别,以及对应指针

  1、控制读写操作模式

      r: 读取文件,文件存在的时候,文件指针调到文件开头,若文件不存在则会报错 ----->默认

      w:写入文件,在文件存在的时候会清空文件,文件指针调到文件开头,若文件不存在则会先创建再写入,会覆盖源文件

      a:写入文件,在文件存在的时候不会清空文件,文件指针调到文件末尾,若文件不存在则会先创建再写入,但不会覆盖源文件,而是追加在文件末尾

  2、控制读写内容模式

       t:读写都是文本格式,即读写都是字符串 ----->默认

       b:读写都是bytes格式,bytes等同于二进制

       强调:如果是 t 模式,一定记住加上encoding = '编码格式'

                  如果是 b 模式。一定记住别加encoding = '编码格式'

  3、 +

  r+:可读可写,文件不存在也会报错,写操作是会覆盖

  w+:可读,可写,文件不存在先创建,会覆盖

  a+:可读,可写,文件不存在先创建,不会覆盖,追加在末尾

  注意:这里的覆盖是指每次重新打开文件进行操作是覆盖原来的,如果实在打开文件中则不会覆盖

  3)关闭文件

    文件关闭的原因:

        *将写缓存同步到磁盘

        *Linux系统中每一个进程打开文件的个数是有限的,如果打开文件数到了系统限制,则会打开失败。

 

上一篇:day08


下一篇:自用java面试宝典(无水题)-欢迎指导纠错-day08