• python的基本数据类型


     复习内容

    类型转换:

    1.  数字类型:int()    bool()     float()

    2.  srt与int():  int('10') int('-10')  int('0')  float('-.5')  float('3.14')  str转int类型只能是整数或者浮点数,否则会报错

     str(数字) int转str类型都可以转换。转换完成后是字符串类型  

    3.  重点---str与list相互转换

    字符串转列表案例:

    a = 'abc'
    b = list(a)
    print(b) # 输出结果['a', 'b', 'c']
    列表转字符串:
    a = ['a', 'b', 'c']
    b = ''.join(a) #使用join来连接列表中的各各元素
    print(b)     # 输出结果 'abc'
    print(type(b)) # 类型是str类型


    字符串分割,分割后的都一个列表
    a = 'abc|def|ghj'
    b = a.split('|') #此处使用split以 '|' 号分割
    print(b) # 此处输出结果为['abc', 'def', 'ghj'] 字符串分割后会得到一个列表
    再变回字符串:
    a = ['abc', 'def', 'ghj']
    b = '|'.join(a) # 此处使用join来连接列表中的元素
    print(b)      # 此处输出结果为abc|def|ghj


    4. list set tuple 类型的相互转换()

    直接在()内添加相对应的类型
    比如:
    a = ['abc', 'def', 'ghj']
    b = set(a)
    print(b) # 输出结果就是一个集合{'def', 'ghj', 'abc'}

    a = ['abc', 'def', 'ghj']
    b = tuple(a)
    print(b) # 输出结果就是一个元祖('abc', 'def', 'ghj')

    5. list 与dict:
    a = 'a=1&b=2&c=3'  # 定义字符串
    # [('a', '1'), ('b', '2'), ('c', '3')] # 目标列表

    b = a.split('&') # 使用'&'来分割字符串 得到的结果是['a=1', 'b=2', 'c=3'] 一个列表类型
    l = [] # 定义一个空列表来装值
    for i in b: # 循环取到列表中的字符串(对应上次分割后的列表)
    c = tuple((i.split('='))) # 此处强转,使用tuple来改变他分割后的小列表,转换成元祖
    l.append(c) # 添加到定义的空列表中
    print(l) # 输出的值为[('a', '1'), ('b', '2'), ('c', '3')]

    再把列表转化为字典:
    {'a': '1', 'b': '2', 'c': '3'} # 目标字典
    dic = {}         # 先定义一个空列表  
    for k,v in l: # 使用两个变量来接受列表中的两个值 因为列表循环是依次取值
    dic[k]=v # 然后字典中的key (此处的dic[k]是把k取到的值作为它的key) 来对应他的value (dic[k] = v)
    print(dic) # 返还的结果是{'a': '1', 'b': '2', 'c': '3'}

    6.可以通过字典构建任意数据的映射关系
    type_map = {
      1: '壹',                 # value 可以是字符串
      '壹': 1,                 # 可以为数字
      'owen':(1, 88888),      # 可以为元祖,或者列表,字典,集合。
      'add': add # add是功能(函数)  # 甚至是函数。所有的类型都可以为value

    }

    # 普通字符串:u'以字符作为输出单位'
    print(u'abc') # 可以为一个字节的字母或者数字输出
    print(u'李') # 也可以为三个字节的中文输出


    # 二进制字符串:b'' 二进制字符串以字节作为输出单位
    print(b'abc') # 必须使用一个字节的字符输出
    print(b'李') # 如果输入超过一个字节,比如为三个字节的中文,会直接报错



    # 原义字符串:r'以字符作为输出单位,所有在普通字符串中能被转义的符号在这都原样输出'
    print(u'a b c') # 如果此处加上转义字符,他会按照转义字符输出
    print(r'a b c') # 如果是r,此处的转义符号会变成普通的符号输出。所以r叫原义字符

    print(r'F:python8期课堂内容day08代码1.三种字符串.py') # 比如打印这个文件路径,如果字符串前方不加r,内部的转义字符会有效果
    # 文件:就是硬盘的一块存储空间

    # 使用文件的三步骤:
    # 1.打开文件- 得到文件对象:找到数据存放在硬盘的位置,让操作系统持有该空间,具有操作权
    # 硬盘空间 被 操作系统持有
    # 文件对象f 被 应用程序持有
    f = open('1.三种字符串.py', 'r', encoding='utf-8')

    # 2.操作文件
    f = open('day8作业.py','r',encoding='utf-8')
    data = f.read() # read() 将内容一次性读完
    print(data)


    # data = f.read(10) # 读取指定字符数
    # print(data)

    # data = f.readline() # 一次读取一行(文件的换行标识就是结束本次读取的依据)
    # print(data)

    # data = f.readlines() # 将所有内容读存,按换行标识作为读取一次的依据,存放为列表
    # print(data)


    # 3.释放资源
    f.close() # 让操作系统释放硬盘空间资源
    # del f # 应用程序释放对对象的持有


    wf = open('target.txt', 'w', encoding='utf-8')

    wf.write('123 ')
    wf.write('456 ')
    wf.flush() # 向操作系统发送一条将内存中写入的数据刷新到硬盘
    wf.write('789 ')
    wf.writelines(['abc ', 'def ', 'xyz '])

    wf.close() # 1.将内存中写入的数据刷新到硬盘 2.释放硬盘空间


    '''
    # 文件操作必须打开文件资源,操作完毕后必须释放文件资源

    # with...open就是优化整合了文件资源的打开与释放

    '''主模式:r | w | a | -- 主模式只能选取一个,规定着主要的操作方式
    从模式:t | b | +
    -- 从模式也必须出现,但个数不一定是一个,为主模式额外添加功能
    '''

    # 1、r:文件必须提前存在,不存在报错


    # 2、w:文件可以存在,也可以不存在,存在则清空后写入,不存在新建后写入

    # 3、a:文件可以存在,也可以不存在,存在在之前内容的末尾追加写入,不存在新建后写入

    # 4、x:文件必须不存在,它会自动创建后写入,如果存在,就报错 - 了了解

    # 5、从模式t:以字符形式操作文本内容,t模式下只能操作文本文件 - 默认模式
    # rt: 文件必须提前存在,不存在报错,文件操作采用字符形式 - 简写为 r
    # wt: 文件可以存在,也可以不存在,存在则清空后写入,不存在新建后写入,文件操作采用字符形式 - 简写为 w
    # at: 文件可以存在,也可以不存在,存在在之前内容的末尾追加写入,不存在新建后写入,文件操作采用字符形式 - 简写为 a

    # 6、从模式b:以二进制字节操作内容,可以操作所有类型文件,二进制下不需要进行编码规定

    # 重重点:用for循环直接循环文件对象,可以从文件对象中一行一行获取内容


    # 7、从模式+:可读可写
    # r+t:文件必须存在的可读可写,默认从头开始替换写,按字符操作
    # w+t:文件存在清空不存在创建的可读可写,按字符操作
    # a+t:文件存在追加不存在创建的可读可写,按字符操作

    # r+b:文件必须存在的可读可写,默认从头开始替换写,按字节操作
    # w+b:文件存在清空不存在创建的可读可写,按字节操作
    # a+b:文件存在追加不存在创建的可读可写,按字节操作



    # 不同的操作系统,默认编码不一致,必须目前操作编码 ,t模式下,必须根据文件的编码来设置操作文件对象的编码

    b模式下
    文件在硬盘中本质就是按二进制存储,所已经可以直接读取二进制,文件写入内容是,内容必须为二进制数据,那么数据就已经是其他通过某种编码处理好的数据,形成的文件一定就是采用处理的那个编码
     
    # 文本文件的复制:可以t也可以b
    with open('abc.txt','r',encoding='utf-8') as rf:     # 首先以只读模式打开起始文件
    with open('def.txt','w',encoding='utf-8') as wf: # 然后用'w'模式,创建一个新的文件
    for line in rf : # 遍历起始文件
    wf.write(line)                 # 然后使用新文件来接受遍历起始文件的数据 这样就复制了起始文件的内容到了新文件
    with open('abc.txt','rb') as rf:                     # 然后使用二进制只读打开
    with open('xyz.txt','wb') as wf: # 使用'wb'创建新文件夹来接受,以二进制的方式来写入
    for line in rf: # 遍历起始文件
    wf.write(line)               # 然后使用新文件来接受遍历起始文件的数据 这样就复制了起始文件的内容到了新文件





    # 非文本文件只能采用b模式操作,不需要指定编码 - 因为根本不涉及编码解码过程

    # 1.游标操作的是字节,所有只能在b模式下进行操作
    # 2.游标操作可以改变操作位置,r模式下可以改变位置进行操作,所有主模式选择r模式
    # 3.seek(offset, whence):
    # -- offset为整数就是往后偏移多少个字节,负数就是往前偏移多少个字节
    # -- whence:0代表将游标置为开头,1代表从当前位置,2代表将游标置为末尾





  • 相关阅读:
    紫书 例题8-6 UVa 1606(扫描法)
    紫书 例题8-5 UVa11054(等价转换)
    紫书 例题8-4 UVa 11134(问题分解 + 贪心)
    紫书 例题8-3 UVa 1152(中途相遇法)
    紫书 例题8-2 UVa 11605(构造法)
    Codeforces Round #437 (Div. 2, based on MemSQL Start[c]UP 3.0
    2016ACM/ICPC亚洲区沈阳站
    Tenka1 Programmer Contest D
    [Gym-101512C] 凸包+最远点对
    ZOJ
  • 原文地址:https://www.cnblogs.com/liguodeboke/p/10753313.html
Copyright © 2020-2023  润新知