首页 > 代码库 > 【Python】 list & dict & str

【Python】 list & dict & str

list&dict&string

  这三种类型是python中最常用的几种数据类型。他们都是序列的一种

  ■  序列通用操作

  1. 分片

    s[a:b] 返回序列s中从s[a]到s[b-1]的片段。注意s[0:0]是空集而不是s[0]

    s[a:b:c]  加入第三个参数以设置取样步长。可以设置成负数来从右向左取样

  2. 加减乘除

    [None] *2 => [None,None]

  3. 一些内建函数的操作

   len(s),max(s),min(s)等

 

  ■  list

  对于列表ls

  赋值  只要不越界,就可以进行分片的赋值

  del   del语句后面加的是list[index],不是值也不是索引

  ls.append()  返回值是None

  ls.count(...)  计某一值出现的次数

  ls.extend(another_ls)  将两个列表合并

  ls.index(value)  获取某个值的索引

  ls.insert(index,value)  在某个地方插入值

  ls.pop()  不加参数默认pop掉最后一个元素并且返回其值

  ls.remove(..)  去除从左到右第一个匹配到的值,如果没找到报错

  ls.reverse()  返回None,对ls本身反序

  ls.sort()  返回None,对ls本身排序

  //以上两个和sorted(ls),reversed(ls)区别,这两个是以ls为素材返回一个排序或者反序的迭代器。

  //顺便,sorted和sort可以再传一个key作为参数,key是一个函数对象,意思是在进行排序时依据不是默认的东西,而是把此值作为参数传给key函数后经过处理后的返回值。比如想让一个字典的列表按照每个字典中的某个键"dict_key"的值大小来排序就可以sorted(dict,key=lambda x:x.get("dict_key"))

  

  ■  dict

  对于字典d

  d.clear()  清空字典

  d.copy()  深复制

  d.get(...)  

  d.has_key(...)  判断字典是否含有某个键

  d.items()  字典列表化,每个元素是个元组,tuple[0]是key,tuple[1]是value

  d.keys()

  d.update(e)  用e更新d,对于d中没有的key则新建item,对于有的覆盖老的value

  d.values()

 

  ■  str

  对于字符串s

  s.find(...)  返回子串的位置

  ‘mark‘.join(list)  将mark作为分隔符把一个list给合并成一个字符串

  s.lower()  全部小写化

  s.upper()  全部大写

  s.title()  单词词首全部大写

  s.capitalize()  字串串首大写

  s.isupper()  判断是否是全部字符都是大写

  s.islower()

  s.istitle()

  //以上这六七个对字符串的文字性的处理都是返回值,不改变字符串本身的

  s.replace(a,b)

  s.split()

  s.strip()

  s.format("a","b")  用"a","b"等给出的素材串替换s中的"{1}","{2}"这些部分,相当于%s % (...)的作用。如果s中写的不是{1},{2}这种的话可以写{some_text},然后在format的参数里就要写some_text=...来指定替换的变量的名称(有点模板语言的意思)

 

  ■  string模块

  其实str类本身的一些方法还不够强大,所以有了专门的String模块来处理一些事情

  string模块的成员变量们:

    string.lowercase  指代所有小写字母,相当于"abcd....xyz"

    string.uppercase

    string.letters  所有字母,先大写再小写,相当于"abcd...xyzABC..XYZ"

    string.whitespace  所有空白字符

    string.punctuation  一些标点符号

  string模块的方法:

    capitlize(s)  返回S的首字母大写的串

    capwords(s,sep)  用sep来split掉s,然后把split出来的每部分的首字母大写,再用sep把这些部分连接起来,sep默认为空格

    center(s,width[,fllchar])  把s放在width(一个int数)长的字符串郑重,两边用fillchar填充。可以用于生成文本文件中的分隔符之类的  

    count(s,sub[,start[,end]])  返回在s[start:end]片段中sub子串出现的次数

    swapcase(s)  切换大小写字母

    zfill(s,width)  在s左侧添加0知道宽度达到width

 

  上面曾经提到过s.format类似模板语言(比如velocity,python的jinja2模块等)的功能,其实这是基于string中的一些类。string中有个Template类可以让用户手动地构造简单的模板:

from string import Template

s = Template("Hello, ${name}")    #变量用${...}的形式
s.substitute(name="Frank")    #返回Hello, Frank
s.safe_substitute(namae="Frank")    #save_substitute()对找不到的变量不报错

 

【Python】 list & dict & str