本文共 7344 字,大约阅读时间需要 24 分钟。
1、列表
1 2 3 4 5 | #!/usr/bin/env python #_*_coding:utf-8_*_ names = [ 'Alex' , "Tenglan" , 'Eric' ] #print names[0] //python2.7不必加括号 print (names[ 0 ]) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/usr/bin/env python #_*_coding:utf-8_*_ #切片:取多个元素 names = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] print (names[ 1 : 4 ]) #追加 names.append( "xiao" ) print (names) #插入 names.insert( 2 , "强行从Eric前面插入" ) print (names) #修改 names[ 2 ] = "该换人了" print (names) |
1 2 3 4 5 6 7 8 9 | #删除 del names[ 2 ] print (names) #删除指定元素 names.remove( "Eric" ) print (names) #删除列表最后一个值 names.pop() print (names) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #扩展 b = [ 1 , 2 , 3 ] names.extend(b) print (names) #拷贝 name_copy = names.copy() print (name_copy) #统计 names = [ 'Alex' , 'Tenglan' , 'Amy' , 'Tom' , 'Amy' , 1 , 2 , 3 ] print (names.count( "Amy" )) #排序 names[ - 3 ] = '1' names[ - 2 ] = '2' names[ - 1 ] = '3' names.sort() print (names) |
1 2 3 4 5 | #反转 names.reverse() print (names) #获取下标 print (names.index( "Amy" )) |
2、元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
语法
names = ("alex","jack","eric")
它只有2个方法,一个是count,一个是index,完毕。
1 2 3 4 5 | #!/usr/bin/env python #_*_coding:utf-8_*_ names = ( "alex" , "jack" , "eric" ) print (names.count( "alex" )) print (names.index( "jack" )) |
3、字符串操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/3/26 11:31 # @Author : corasql # @Site : # @File : str_test.py # @Software: PyCharm Community Edition #首字母大写 name = 'test' print (name[ 0 ].capitalize()) #大写全部变小写 name = "TeSt" print (name.casefold()) # 输出 '-----------------------TeSt-----------------------' print (name.center( 50 , "-" )) #将字符串编码成bytes格式 print (name.encode()) |
1 2 3 4 5 6 7 | #判断字符串是否以 Li结尾 name = "TeStLi" print (name.endswith( "Li" )) #输出'Alex Li', 将\t转换成多长的空格 print ( "Alex\tLi" .expandtabs( 10 )) #查找A,找到返回其索引, 找不到返回-1 print (name.find( 'A' )) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/3/26 12:58 # @Author : corasql # @Site : # @File : str_test1.py # @Software: PyCharm Community Edition #format msg = "my name is {}, and age is {}" print (msg. format ( "alex" , 22 )) msg = "my name is {1}, and age is {0}" print (msg. format ( "alex" , 22 )) msg = "my name is {name}, and age is {age}" print (msg. format (age = 22 ,name = "ale" )) print (msg.format_map({ 'name' : 'alex' , 'age' : 22 })) #返回a所在字符串的索引 print (msg.index( 'a' ) ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #检测字符串是否由字母和数字组成 print ( '9aA' .isalnum()) #是否整数 print ( '9' .isdigit()) #检测字符串是否只由数字组成。这种方法是只针对unicode对象 str = u "this2009" print ( str .isnumeric()) str = u "23443434" print ( str .isnumeric()) #判断字符串所包含的字符是否全部可打印。字符串包含不可打印字符,如转义字符,将返回False print ( str .isprintable()) #字符串是否仅包含空格或制表符。注意:空格字符与空白是不同的 print ( str .isspace()) |
1 2 | #判断字符串每个单词的首字母是否大写 print ( str .istitle()) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #判断所有字母字符是否全部大写 print ( str .isupper()) #'alex|jack|rain' print ( "|" .join([ 'alex' , 'jack' , 'rain' ])) #maketrans intab = "aeiou" outtab = "12345" trantab = str .maketrans(intab, outtab) str = "this is string example....wow!!!" print ( str .translate(trantab)) #out: th3s 3s str3ng 2x1mpl2....w4w!!! print (msg.partition( 'is' )) #out: ('my name ', 'is', ' {name}, and age is {age}') #替换 print ( "alex li, chinese name is lijie" .replace( "li" , "LI" , 1 )) |
1 2 3 4 5 6 7 8 9 10 11 12 | #大小写互换 str = "this is string example....wow!!!" print ( str .swapcase()) print (msg.zfill( 40 )) # out: 00000my name is {name}, and age is {age} print (msg.ljust( 40 , "-" )) #my name is {name}, and age is {age}----- print (msg.rjust( 40 , "-" )) #-----my name is {name}, and age is {age} # 检测一段字符串可否被当作标志符,即是否符合变量命名规则 b = "ddefdsdff_哈哈" print (b.isidentifier()) |
4、字典操作
字典的特性:
dict是无序的
key必须是唯一的,so 天生去重
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/3/26 13:26 # @Author : corasql # @Site : # @File : dic.py # @Software: PyCharm Community Edition info = { 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" , } #增加 info[ "stu1104" ] = "Python " print (info) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #修改 info[ 'stu1101' ] = "test" print (info) #删除 info.pop( "stu1101" ) #标准删除姿势 print (info) del info[ 'stu1103' ] # 换个姿势删除 print (info) #随机删除 info = { 'stu1102' : 'LongZe Luola' , 'stu1103' : 'XiaoZe Maliya' } info.popitem() print (info) #查找 info = { 'stu1102' : 'LongZe Luola' , 'stu1103' : 'XiaoZe Maliya' } print ( "stu1102" in info) #标准用法 print (info.get( "stu1102" )) #获取 print (info[ "stu1102" ]) #同上,但是看下面 |
1 2 3 4 5 6 7 8 | print (info[ "stu1105" ]) #如果一个key不存在,就报错,get不会,不存在只返回None #循环dict #方法1 for key in info: print (key,info[key]) #方法2 for k,v in info.items(): #会先把dict转成list,数据里大时莫用 print (k,v) |
5、集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
1 2 3 4 5 6 7 8 9 10 | s = set ([ 3 , 5 , 9 , 10 ]) #创建一个数值集合 t = set ( "Hello" ) #创建一个唯一字符的集合 a = t | s # t 和 s的并集 b = t & s # t 和 s的交集 c = t – s # 求差集(项在t中,但不在s中) d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中) |
基本操作:
1 2 3 4 5 6 7 8 9 | t.add( 'x' ) # 添加一项 s.update([ 10 , 37 , 42 ]) # 在s中添加多项 使用remove()可以删除一项: t.remove( 'H' ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | len (s) set 的长度 x in s 测试 x 是否是 s 的成员 x not in s 测试 x 是否不是 s 的成员 s.issubset(t) s < = t 测试是否 s 中的每一个元素都在 t 中 s.issuperset(t) s > = t 测试是否 t 中的每一个元素都在 s 中 s.union(t) s | t 返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t) s & t |
1 2 3 4 5 6 7 8 9 10 11 12 | 返回一个新的 set 包含 s 和 t 中的公共元素 s.difference(t) s - t 返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t) s ^ t 返回一个新的 set 包含 s 和 t 中不重复的元素 s.copy() 返回 set “s”的一个浅复制 |
6、文件操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/3/26 14:00 # @Author : corasql # @Site : # @File : file.py # @Software: PyCharm Community Edition f = open ( 'lyrics' ) # 打开文件 first_line = f.readline() print ( 'first line:' , first_line) # 读一行 print ( '我是分隔线' .center( 50 , '-' )) data = f.read() # 读取剩下的所有内容,文件大时不要用 print (data) # 打印文件 f.close() # 关闭文件 |
7、字符编码与转码
需知:
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
1 2 3 4 5 6 7 8 9 10 | python2 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/3/26 13:55 # @Author : corasql # @Site : # @File : decode2.py # @Software: PyCharm Community Edition import sys print (sys.getdefaultencoding()) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | msg = "我爱北京天安门" msg_gb2312 = msg.decode( "utf-8" ).encode( "gb2312" ) gb2312_to_gbk = msg_gb2312.decode( "gbk" ).encode( "gbk" ) print (msg) print (msg_gb2312) print (gb2312_to_gbk) python3 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/3/26 13:51 # @Author : corasql # @Site : # @File : decode.py # @Software: PyCharm Community Edition import sys print (sys.getdefaultencoding()) |
1 2 3 4 5 6 7 8 9 | msg = "我爱北京天安门" #msg_gb2312 = msg.decode("utf-8").encode("gb2312") msg_gb2312 = msg.encode( "gb2312" ) #默认就是unicode,不用再decode,喜大普奔 gb2312_to_unicode = msg_gb2312.decode( "gb2312" ) gb2312_to_utf8 = msg_gb2312.decode( "gb2312" ).encode( "utf-8" ) print (msg) print (msg_gb2312) print (gb2312_to_unicode) print (gb2312_to_utf8) |