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

一. 列表(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都会忽略该字符。

    

     

 

  

     

        

    

    

   

 



 
 
 
 
 
 
 



 
 
 




         

  

  

  

   

    

    

   

   

  

   

  

   

    

 

  

  

原文地址:https://www.cnblogs.com/eichar/p/9996560.html