• 学习笔记三 字符串,列表,字典


    一. 列表(list)

     1. 列表初始化定义有两种方式:

      1.a=[] #空list

      2.a=list() #空list

     2.列表的下标是从0开始:

      #list #列表、数组

      stus = ['王志华','乔美玲','段鑫琪','王立文' ]

      #      0     1      2      3

      列表的长度:len

      

      结果如下:

       

     3.列表的新增:

      1.直接加在末尾:append

      

        结果如下:

       

       2.指定位置增加:insert,带下标和要插入的值

      

        结果如下:

      

      4.列表的修改:直接通过下标赋值,下标一定要在列表的长度范围内(可以用正负数,-1代表列表的最后一位),超出则报错

      正常赋值:

      

      结果如下:

       

       异常赋值:超出列表范围

      

       结果如下:

      

      5.列表的删除:

       1.pop:有返回值,是返回删除的那个元素。不带参数为默认删除列表的最后一个元素,也可以指定下标。如果指定一个不存在的下标,则会报错。是对下标指定删除。

       正常删除:

       

        结果如下:

       

        异常删除:

       

          结果如下:

       

       2.remove:返回None,通过列表元素值删除,如果传入一个不存在的元素,则会报错。是对元素值指定删除。  

       技术要点:

       1)在列表非尾部增加或删除元素时,该位置后面元素会向后移动或向前移动,保证元素之间没有缝隙,这样的话,这些元素的索引会发生变化。

       2)remove()方法删除列表中指定值的首次出现,也就是说,以lst.remove(3)为例,如果列表lst中有多个3,那么只有第一个3被删除,同时该位置后面的所有元素向前移动,索引减1。

       正常删除:

       

          结果如下:

       

          异常删除:

       

        结果如下:

       

          3. del:返回None,是通过列表进行下标检索删除。如果指定不存在则报错。是对一个变量进行指定删除,由于是对列表变量进行删除,则可以删除一个列表区间段和整个列表,del是解除变量的引用,当整个列表引用解除后,列表则不存在。

       正常删除:

       

        结果如下:

       

          批量删除:

       

        结果如下:

       

        因为参数是变量,则也可以删除整个列表,删除后的列表不可用。

       

                  异常删除:

       

        结果如下:

       

       4.清空列表:clear

      与del不同,clear只是清空列表数据,不会解除对列表的引用,清空完列表还在。

            

      6.列表的查找:

      1.通过指定下标获取某个元素的值:stus[3]

      2.查询某个元素在list里面出现的次数:count,如果未出现则为0

      

         3.返回某个元素的下标:index,如果列表里出现多次,则返回第一次出现的下标。如果元素不存在则报错。

      正常测试:

      

              异常查询:

                    

             

       7.列表排序: 

      1.reverse:列表反转,该方法返回None,但是会对列表的元素进行反向排序。

      

        2.sort:函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数

      

         8.两个list合并:extend

      

       9.布尔类型:布尔类型只有Ture,False,常用于真假判断。

      判断一个元素在不在list里,可以用in:

      

      10.list循环:

       1.普通循环:如果直接循环一个list,那么每次取的就是list里面的每一个元素

       

        2.enumerate:同时取到列表的下标和值

       

        11.多维数组:列表嵌套

       需要一层层的定位到要操作的维数,其他所有的方法同一维一样。

      

          12.切片:list取值的一种方式,它指定范围取值,顾头不顾尾,可以指定步长(以N为整体作为一个跨度),数值可以为负数,但是指定的值都要在list范围内,不然会报错。

             

       按照取值的方向,前下标一定要先比后下标先出现,否则取不到正确的值:

       


    二.字典(dict):
      字典是一个大括号括起来的key-value形式,与list不同的是,dict是无序的,即每次打印可能看到值得顺序都不一样;dict里的key是
    唯一的不允许重复,而list里的值是可以重复的。因此dict的查询比list快,因为无序遍历。

    1.查询:
     直接通过key获取值,和列表取值方式一样,但是如果key的值不存在会报错:

    为了防止key不存在产生的报错,使用get查询,如果key不存在,get默认返回None,也可以指定当key不存在时的返回值。


    2.修改:
     和list一样,通过key直接赋值。


    3.新增:
     同修改一样,直接用key赋值,由于同修改一样,所以当key如果是已存在的,则会进行修改操作:

    为了避免上述的新增变修改,可以使用setdefault,
    用setdefault新增一个已经存在的key,它不会改变原来key的value。


    4.删除:
     1.pop:返回删除的value值,与list不同的是必须制定key值。

    2.del:无返回值,解除引用,作用整个dict的时候,dict则不再存在,同list。

    3.clear():清空,只会清除内容,但是保留变量引用。

    4.popitem():随机删除一个非空dict的key-value,且将删除的这个值返回。


    5.循环:
     1.直接循环:效率高,不需要将dict转换成list,遍历取的是dict里的key值。

    2.间接取key循环:dict.keys()效率低,会先从dict将所有的key取出来组成一个list再进行for遍历。
      3.value循环:dict.values()该方法也会先从dict将所有的value取出来组成一个list再进行for遍历
      4.key,value循环:dict.items()该方法会将dict的key-value以元组的形式组合成一个一位数组再进行遍历。

       

      6.判断key是否存在:in

     

       7.字典嵌套:

     字典嵌套也是层层定位。

     如有以下字典:

      

        结果如下:

      

    三.字符串:

     下标 索引、切片 同样适用于字符串,字符串也是可以循环的。

      以下是字符串的常用方法介绍:

      1.strip:以指定方式去掉字符串两边的内容,字符串中间的不可以去除。不带参数默认是去掉空格和换行符。

            

          2.count:某个字符串出现的次数。如果没有出现,则次数为0。

       

      3.index:找某个字符串下标,如果有多个,则返回第一次出现的下标。如果查找的字符串不存的话,报错(和list一样)。

       

       4.find:找某个字符串下标,如果有多个,则返回第一次出现的下标。查找的字符串不存在会返回-1。与index的区别在于找不到不会报错。

       

           5.replace:将字符串中的字符指定替换。可以设定替换的个数,默认为全部替换。替换之后不会改变原有的字符串,会返回一个新的字符串。

       

            6.upper:将字符串中的小写字母转为大写字母。替换之后不会改变原有的字符串,会返回一个新的字符串。

       

              7.lower:将字符串中的大写字母转为小写字母。替换之后不会改变原有的字符串,会返回一个新的字符串。

             

            8.capitalize:将字符串中的首字母大写。执行后不会改变原有的字符串,会返回一个新的字符串。

        

              9.startswith:判断是否以某个字符串开头。

          

         10.endswith:判断是否以某个字符串结尾。用于文件后缀名很方便。

          

             11.islower:判断是否都是小写字母。

        

            12.isupper:判断是否都是大写字母。

           

             13.isdigit:判断是否为纯数字。

                

         14.center:将字符串居中显示,长度指定,不足的地方以指定模式补齐,执行后不会改变原有的字符串,会返回一个新的字符串。

         

               15.isalpha:判断是不是为字母、或者汉字,不能有数字和特殊符号。 

            

               16.isalnum:字符串里面只要没有特殊字符,就返回true。

           

               17.isidentifier:是不是一个合法的变量名。

           

               18.isspace:检测字符串是否只由空格组成。

         

               19.format:一种格式化字符串的函数,基本语法是通过 {} 和 : 来代替以前的 % 。方便的是当占位符太多时,可以忽略占位符的顺序。SQL语句常用。

         例如没有格式化之前,语句:

                s='insert into user value (%s,%s,%s,%s,%s,%s)'%(user,paswd,)

                格式化的方法为:

         

              20.format_map:执行字符串格式化操作,替换字段使用{}分隔,同str.format(**mapping), 除了直接使用mapping,而不复制到一个dict。和format相比,需要将要输入的参数以dict的形式直接映射。SQL语句常用。

        

               结果如下: 

            

              21.zfill:不够的位数以0补齐。位数如果够了则忽略。

             

              22.split:将字符串以指定形式分隔后以list形式返回。默认以空格符分隔。

         

              23.join:以某个字符串把list里面元素连起来,以字符串的形式返回。操作对象必须是个list。

          

    四.简单的文件操作:

      1.文件的四种操作:  

        1.open:打开文件,必须存在在才可以读。 

        2.close:关闭文件。

        3.read:读文件。

       4.write:写文件。

      2.文件的模式:

        1.r 打开只读文件,该文件必须存在。 
      2.r+ 打开可读写的文件,该文件必须存在。从顶部开始写,会覆盖之前此位置的内容 
      3.w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 
      4.w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 
      5.a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 
      6.a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 

      7.上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。

        

         

     

      

         

            

        

        

       

     
    
    
    
    
     
     
     
     
     
     
     
    
    
    
    
     
     
     




             

      

      

      

       

        

        

       

       

      

       

      

       

        

     

      

      

  • 相关阅读:
    iTerm2 颜色配置
    IOS_问题: Xcode8 安装KSImageName插件, 编代码就崩了
    IOS_设置启动图片若干问题
    Android 多国语言
    Reveal 配置与使用
    自定义代码块
    Android 动画
    SQL
    dialog
    2016-1-18UIlabel学习,正则表达式
  • 原文地址:https://www.cnblogs.com/eichar/p/9996560.html
Copyright © 2020-2023  润新知