• Python小白的发展之路之Python基础(二)【字符串、列表、集合、文件操作】


    列表、元组操作

    字符串操作

    字典操作

    集合操作

    文件操作

    字符编码与转码

     1.列表、元组操作

    (1)列表

    列表是可变的(mutable)——可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不可变的;列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

    我们使用列表的方法无非就是:增删改查这4中方法

    定义列表:

    names=['chen','zi','ang']

    列表的切片:用来取多个元素  

     1 下标从0开始排序,-1表示最后一个,在取得过程中取前不取后
     2 >>> phones=['Iphone','Xiaomi','Sansumg','Meizu','Huawei']
     3 >>> phones[1:3]  #取下标1到4之间的元素(包括1不包括4)  "取首不取尾" 
     4 ['Xiaomi', 'Sansumg', 'Meizu']
     5 >>> phones[2:-1]   #取下标2到-1之间的元素,不包括-1
     6 ['Sansumg', 'Meizu']
     7 >>> phones[0:3]    #phones[:3] 两者一样,0可以省略
     8 ['Iphone', 'Xiaomi', 'Sansumg']
     9   
    10 有间隔的取元素:
    11 >>> phones[0::2]  #phones[::2] #每隔1个取一个 
    切片操作

    追加操作:这里用到的方法是append来实现追加

    1 >>> phones
    2        ['Iphone','Xiaomi','Sansumg','Meizu','Huawei']
    3 >>> phines.append("")
    4 >>> phones
    5        ['Iphone','Xiaomi','Sansumg','Meizu','Huawei','Dachang']
    追加操作

    插入操作:这里用到insert来实现

    1 >>>names=['chen','zi','ang']
    2 >>>names.insert(插入的位置,插入的内容)
    3 例:>>>names.insert(1,'miao')  [插入的位置1]
    4 结果:>>>names
    5 ['chen','miao','zi','ang']
    插入操作

    修改操作:

    1 >>>names
    2 ['chen','miao','zi'.'ang']
    3  修改miao为damiao
    4 >>>names[2]='damiao'
    5 >>>names
    6 ['chen','damiao','zi'.'ang']
    修改操作

    删除操作:总共有3中删除方法

     1 方法1:python中最常用的删除方法
     2 >>>names=['chen','damiao','zi','ang']
     3 >>>del names[3]
     4 >>>names
     5 ['chen','damiao','zi']
     6 
     7 方法2:删除指定的字符
     8 >>>names=['chen','damiao','zi','ang']
     9 >>>names.remove('damiao')
    10 >>>names
    11 ['chen','zi','ang']
    12 
    13 方法3:删除列表中最后一个值
    14 >>>names=['chen','damiao','zi','ang']
    15 >>>names.pop()
    16 >>>names
    17 ['chen','damiao','zi']
    删除操作

     合并操作:将多个列表合并成一个列表

    1 >>>names=['chen','zi','ang']
    2 >>>a=['1','2','3','4']
    3 >>>names.extend(a)  #合并操作
    4 >>>names
    5 ['chen','zi','ang','1','2','3','4']
    合并操作

    统计操作:

    >>>names=['chen','ai','ang','chen']
    >>>names.count('chen')
    2

    排序;翻转:

    排序:
    >>>names=['chen','zi','ang','1','2','3']
    >>>names.sort()   #排序
    >>>names.reverse()   #翻转

    获取下标:

    >>>names=['chen','zi','ang','damiao']
    >>>names.index('zi')   #返回的是找到的第一个值的下标

    (2)元祖:元祖是特殊的列表(只读列表),一旦创建不可以修改

    只有两个方法:count index


    2.字符串操作

    此处只概述常用的一些操作

    a='Hello'
    b='World'
    >>>print(a+=b)   #连接字符串
    'HelloWorld'
    >>>print(cmp(a,b))  #比较字符串,相同返回0 不相同返回1
    1
    >>>print(len(a)) #获取字符串的长度
    5
    c='I,am,damiao'
    >>>print(c.strip(","))  #去除特定符号
    Iamdamiao
    >>>print(c.split(",")) #分割字符串
    >>>print(c.replace(oldstr,newstr,[count]))

    3.字典操作

    字典:字典是一种键值型数据结构,感觉有点类似mongo数据库

    特性:

    字典的特性:

    • dict是无序的
    • key必须是唯一的,so 天生去重

    3.1创建字典

    字典的创建方法有两种,第一种是使用花括号,第二种是使用内键函数dict

    >>>info={}
    >>>info={'name':'chenziang','sex':'boy','hobby':'python'}
    >>>info=dict()

     增加

    info['love']='iphone'
    >>>info
    {'hobby': 'python', 'love': 'iphone', 'sex': 'boy', 'name': 'chenziang'}

     修改

    >>>info['hobby']='Linux'
    >>>info
    {'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}

    删除:这里提供了3种删除方法

    >>>info
    {'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}
    >>>info.pop('sex')  
    >>>info
    {'hobby': 'python', 'love': 'iphone', 'name': 'chenziang'}
    
    >>>info
    {'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}
    >>>del info['hobby']     #python中最常用的删除方法
    >>>info
    {'sex': 'boy', 'love': 'iphone', 'name': 'chenziang'}
    
    >>>info    
    {'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}
    >>>info.popitem()    #随机删除一个
    >>>info
    {'sex': 'boy', 'name': 'chenziang', 'love': 'iphone'}

    查找

    >>>iinfo={'name':'chenziang','sex':'boy','hobby':'python'}
    >>>"sex" in info   #标准用法
    True                    #key不存在则返回None
    
    >>>info.get("hobby")    #获取
    'python'                  #key存在返回value
                                  #key不存在则返回None      
      
    >>>info['hobby']     #key存在则返回value
    'python'                  #key不存在则会报错
    
      

    循环字典

    #方法1
    for key in info:
        print(key,info[key])
    
    
    #方法2
    for k,v in info.items():  #该操作会吧字典先转换成一个列表,当数据量大是请勿使用       
        print(k,v)   

     4.集合操作

    集合是无需的,不重复的数据组合,主要作用有两个:

    • 去重,将一个列表转换成集合,就好自动去重
    • 关系测试,测试数据之间的交集、补集、差集等关系

    常用操作:

    (1)创建集合:

    >>>a = set('chenziang')     #创建一个字符集合
    >>>a
    set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z'])
    >>>b = set([1,2,3,4,5])     #创建一个数字集合
    >>>b
    set([1, 2, 3, 4, 5])

    (2)集合关系操作:

    >>>a
    set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z'])   
    >>>b
    set([1, 2, 3, 4, 5])
    
    >>>a|b     #a和b的并集
    set(['a', 1, 'c', 3, 'e', 5, 'g', 'i', 'h', 2, 'n', 4, 'z']) 
    >>>a&b     #a和b的交集
    set([])
    >>>a-b     #求差集(项在a中,但不在b中)
    set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z'])
    >>>a^b     #对称差集(项在a或b中,但是不会出现在二者中)
    set(['a', 1, 2, 3, 4, 5, 'g', 'i', 'h', 'c', 'n', 'e', 'z'])


    (3)集合的增删改查

    >>>c=set('abc')
    set(['a', 'c', 'b'])
    #添加一项
    >>>c.add('x')
    >>>c
    set(['a', 'x', 'c', 'b'])
    #添加多项
    >>>c.update([1,2,3])
    >>>c
    set(['a', 1, 'c', 'b', 2, 3, 'x'])
    
    #使用remove()可以删除一项:
    >>>c.remove('1')   #此处删除1
    >>>c
    set(['a', 'c', 'b', 2, 3, 'x'])
    
    >>>'a' in c
    True
    >>>'a' not in c
    False
    >>>

     5.文件操作

    在python中对文件操作的流程:

      1.打开文件,得到文件句柄并赋值给一个变量

      2.通过句柄对文件进行操作

      3.关闭文件 (养成操作完文件及时关闭是一个良好的习惯)

    1 文件的基本操作:
    2 f=open('文件名''打开的方式')  #打开方式1
    3 with open('文件名''打开的方式')  as f #打开方式2
    4 line=f.readline()                    #读一行
    5 lines=f.read()                       #读取剩下的内容
    6 
    7 f.close()                                #关闭文件
    View Code

    打开文件的方式(模式):

    • r,只读模式(默认);
    • w,只写模式。【不可读;不存在则创建;存在则删除其中的内容】;
    • a,追加模式。【可读;不存在则创建;存在则只追加内容】;

    在'r','w','a'后+的作用:

    • r+,可读写文件。【可读;可写;可追加】;
    • w+,写读;
    • a+,通a;

    'U'表示在读取文件时,可以将 自动转换成 (与r或r+模式同时使用)

    • rU
    • r+U

    'b'表示处理二进制文件(如:FTP上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb;
    • wb;
    • ab;

     6.字符集与转码

    注意的是:

    1.在python2默认编码是ASCII, python3里默认是unicode

    2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

    3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

     

     上图仅适用于python2

    #-*-coding:utf-8-*-
    __autor__='Chenziang'
    
    import sys
    print(sys.getdefaultencoding())
    
    msg='喵大王'
    msg_bg2312=msg.decode('utf-8').encode('gb2312')
    gb2312_to_gbk=msg_gb2312.decode('gb2312').encode('gbk')
    
    print(msg)
    print(gb2312)
    pritn(gbk2312_to_gbk)
  • 相关阅读:
    关于 iOS 证书,你必须了解的知识
    Spark踩坑记:共享变量
    Python 操作 MySQL 的正确姿势
    【黑客浅析】像黑客一样思考
    利用 Flask+Redis 维护 IP 代理池
    程序员的江湖:从黑木崖到回龙观
    [NM 状态机1] Application状态机详解
    Hadoop 2.0 编译问题小结
    Yarn上的几个问题整理
    Yarn中如何生成状态机图
  • 原文地址:https://www.cnblogs.com/czalinux/p/6222478.html
Copyright © 2020-2023  润新知