python学习day3------列表、元组、字符串操作
列表是有序的,支持增删改查,可以嵌套列表、字典(任何东西)
元组是有序的,只读列表
字符串的操作,可查,不可修改(本质新新的内容覆盖了原来的)
字典是无序的,通过K:V找元素,可以嵌套列表、字典
集合是无序的
一、列表
变量名后加中括号[],接下来介绍对列表进行查操作
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 5 test = []#列表的命名形式 6 7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"] 8 print(name[0],name[2])#取出已知位置的数据,因为计算机在存储数据的时候是以0为开始位置 9 #>>>>zhangsan wangmazi 10 11 #查 12 #切片 13 print(name[1:3])#从计算机位第一个位取到第二位:顾首不顾尾, 14 #>>>>['lisi', 'wangmazi'] 15 16 17 print(name[4])#在知道列表有多长的时候用这个方法可以取到列表最后一位 18 #>>>>gousheng 19 20 21 print(name[-1])#在不知道长度有多长的时候用这个方法可以取到最后一位 22 #>>>>gousheng 23 24 25 print(name[-2])#亦可理解位从0往左数 26 #>>>>chenwu 27 28 29 print(name[-2:])#即便是写的是负数的位置表示,也是自左往右数, 30 # 但是有一个机制就是顾首不顾尾, 31 # 但我想取最后一位的时候就会被忽略掉, 32 # 所以这个时候在冒号后面什么都不写就可以 33 #>>>>['chenwu', 'gousheng'] 34 35 36 print(name[0:3]) 37 #>>>>['zhangsan', 'lisi', 'wangmazi'] 38 print(name[:3])#这两个效果一样,前面若是0的话就可以省略不写 39 #>>>>['zhangsan', 'lisi', 'wangmazi']
对列表进行增、替换、删等操作
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 5 test = []#列表的命名形式 6 7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"] 8 #增 9 #追加数据 10 name.append("quandan") 11 #>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] 12 13 #插在指定位置 14 name.insert(1,"mingzi")#想把数据插在第几机器位就直接写 15 #>>>>['zhangsan', 'mingzi', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] 16 17 #改 18 name[2] = "qiangzi"#把在机器位置2上的lisi换下来用qiangzi 19 #>>>>['zhangsan', 'mingzi', 'qiangzi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] 20 21 #删 22 name.remove("wangmazi")#在知道名字的情况下删除wangmazi 23 del name[3] #删除机器位置3上的名字 24 name.pop()#默认不输入机器位置就删除最后一个,如果输入机器位就跟del name[3]一样 25 print(name)
清空、反转、排序、扩展
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 5 test = []#列表的命名形式 6 7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng","lisi"] 8 #查找wangmazi位置 9 print(name.index("wangmazi")) 10 #>>>> 2 11 #找出上述找到的位置删的名字 12 print(name[name.index("wangmazi")]) 13 #>>>>wangmazi 14 15 #列表允许出现多个名字一样的 16 print(name.count("lisi"))#查找叫lisi的有几个 17 18 #name.clear()#清空列表 19 #name.reverse()#反转列表 20 #name.sort()#排序,按照ascll码进行排序 21 name1 = [1,2,3,4] 22 name.extend(name1)#扩展,将name1添加到name后面,name1没有删除 23 print(name) 24 #>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'lisi', 1, 2, 3, 4]
复制copy、深copy
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 import copy 5 6 test = []#列表的命名形式 7 #name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得 8 #因为他们共同指向内存地址,修改name2,name也会变 9 name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"] 10 11 name2 = name.copy()#复制一份copy只是浅得复制了一些,只复制第一层列表 12 name[2] = "王麻子" 13 name[3][0] = "ERIC" 14 print(name,"\n",name2) 15 16 #这个是赋值 17 name2 = name 18 #深copy就是完全复制,需要添加copy模 19 name2 = copy.deepcopy(name)
分位切片
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 import copy 5 6 test = []#列表的命名形式 7 #name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得 8 #因为他们共同指向内存地址,修改name2,name也会变 9 name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"] 10 #跳两位进行切片 11 print(name[0:-1:2])#这个语句得作用就是从0到-1位每跳两位进行切
二、元组
查找数据的位置
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 5 6 #元组就两个功能count,index,得到机器位 7 name = ("zhangsan","lisi","wangmazi") 8 print(name.count("zhansgan")) 9 #>>>>0 10 print(name.index("lisi")) 11 #>>>>1
三、字符串操作
首字母大写
统计字符串有几个字母
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 #字符串操作 5 name = "my {name} is {eric}" 6 #首字母大写 7 print(name.capitalize()) 8 #>>>Eric 9 10 #统计字符串---下面的程序是统计字符串a有多少个 11 print(name.count("a")) 12 #>>>>0 13 14 #将字符串用50个*包裹着写在中间 15 print(name.center(50,"*")) 16 #>>>>***********************eric********************** 17 18 #判断字符串是不是以ic结尾 19 print(name.endswith("ic")) 20 #>>>>True 21 22 #在字符串中写一个tab键,它将tab转换多少个空格 23 #name ="eri\tc" 24 print(name.expandtabs(tabsize=30)) 25 #>>>>eri c 26 27 #找字符串相应元素的机器位数 28 print(name.find("name")) 29 #>>>>3 30 31 #判断是否有阿拉字符 32 print("abc123".isalnum()) 33 #判断是否包含英文字符(返回True或False) 34 print("asA".isalpha()) 35 #判断是否为10进制 36 print("1A".isdecimal()) 37 #判断是不是一个整数 38 print("1A".isdigit()) 39 #判断是不是一个合法的标识符(变量名) 40 print("1A".isidentifier()) 41 #判断是不是小写 42 print("aA".islower()) 43 #检测字符串是否只由数字组成。这种方法是只针对unicode对象。 44 print("1a".isnumeric()) 45 #判断是不是标题,判断标准是每个首字母大写 46 print("My name is title".istitle()) 47 #设备终端文件用此方法判断 48 print("My name is ".isprintable()) 49 #判断是不是全部大写 50 print("aD".isupper()) 51 #将字符串区分开 52 print("+".join(["1","2","3"])) 53 #>>>>1+2+3 54 #保证我的字符串长度为50,不够的在后面以*补全 55 print(name.ljust(50,"*")) 56 #保证我的字符串长度为50,不够的在前面补上- 57 print(name.rjust(50,"-")) 58 #把大写变成小写 59 print("Eric".lower()) 60 #把小写换成大写 61 print("Eric".upper()) 62 #从左边去掉空格或者回车 63 print("\nEric".lstrip()) 64 #从右边去掉空格或者回车 65 print("Eric\n".rstrip()) 66 #去掉两边的空格或者回车 67 print("\nEric\n".strip()) 68 #命名的时候前后的位数一致,把字母与数字对应,然后显示p如果有对应的字母换作后面的显示(嗯古时候密文一样) 69 p = str.maketrans("abcde","12345") 70 print("Eric".translate(p)) 71 #>>>>Eri3 72 73 #替换(把c换成大写的C)后面还可以跟一个参数。替换几个(print("Eric c".replace("c","C",1))) 74 print("Eric c".replace("c","C")) 75 #找到最后边那个值得下标返回 76 print("eric ic".rfind("c")) 77 #把字符串按照空格(默认)分成列表 78 print("eric is ".split()) 79 #把字符串按照行分 80 print("eric\n c".splitlines()) 81 #全部变成大写 82 print("eric c".swapcase()) 83 #前边不够50位自动用0填充 84 print("eric c".zfill(50))
四、字典操作
增删查改
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 5 #Key-value 6 info = { 7 'stu1101': "TengLan Wu", 8 'stu1102': "LongZe Luola", 9 'stu1103': "XiaoZe Maliya", 10 } 11 #字典是无需得没下标,有key 12 print(info) 13 #改字典stu1101(若不存在则创建) 14 info["stu1101"] = "武藤兰" 15 #查字典 16 print(info["stu1101"]) 17 #删除字典 18 del info["stu1101"] 19 #指定删除 20 info.pop("stu1101")#标准姿势 21 #随机删除 22 info.popitem() 23 24 25 #查 26 print(info.get("stu1103"))#得到其key对应得值 27 print("stu1103" in info)#info.has_key("1103") in py2.x
取值
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 5 #Key-value 6 info = { 7 'stu1101': "TengLan Wu", 8 'stu1102': "LongZe Luola", 9 'stu1103': "XiaoZe Maliya", 10 } 11 b = { 12 'stu1101': "Eric", 13 1:3, 14 2:5 15 } 16 17 #升级:有相同得key就覆盖,没有得就创建 18 info.update(b) 19 print(info) 20 21 #初始化一个新的字典(作用跟copy一样) 22 c = dict.fromkeys([6,7,8],[1,{"name":"eric"},666]) 23 print(c) 24 c[7][1]["name"] = "ASD" 25 print(c) 26 #{8: [1, {'name': 'eric'}, 666], 6: [1, {'name': 'eric'}, 666], 7: [1, {'name': 'eric'}, 666]} 27 #{8: [1, {'name': 'ASD'}, 666], 6: [1, {'name': 'ASD'}, 666], 7: [1, {'name': 'ASD'}, 666]} 28 29 #字典变成列表 30 print(info.items()) 31 32 av_catalog = { 33 "欧美":{ 34 "www.youporn.com": ["很多免费的,世界最大的","质量一般"], 35 "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], 36 "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], 37 "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] 38 }, 39 "日韩":{ 40 "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] 41 }, 42 "大陆":{ 43 "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] 44 } 45 } 46 #修改 47 av_catalog["大陆"]["1024"][1] = "可以在国内做镜像" 48 49 #只打印关键字 50 print(info.keys()) 51 52 #先去taiwan里取值,如果没有就创建,有就把它取出来 53 av_catalog.setdefault("taiwan",{"www.baidu.com":[1,2]}) 54 print(av_catalog )
字典的循环
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 5 #Key-value 6 info = { 7 'stu1101': "TengLan Wu", 8 'stu1102': "LongZe Luola", 9 'stu1103': "XiaoZe Maliya", 10 } 11 12 #字典的循环 13 for i in info: 14 print(i,info[i]) 15 16 #先转成列表在循环输出 17 for k,v in info.items(): 18 print(k,v) 19 20 #前者快后者慢
五、集合
集合的运算:交并补差,对称差集
1 #!/usr/bin/env python 2 #-*- Coding:utf-8 -*- 3 # Author:Eric.Shen 4 5 #集合也是无序的 6 list1 = [1,5,9,4,8,3,45,7,] 7 list1 = set(list1) 8 9 list2 = set([2,6,5,7,9,1,56,4]) 10 print(list1,list2) 11 12 #交集,list1与2的交集 13 print(list1.intersection(list2)) #运算符表达交集 a = t & s 14 #并集1与2的并集 15 print(list1.union(list2)) #运算符表达并集 b = t | s 16 #对称(反向)差集 交集的补集,全集是1和2 这是除去他们的交集剩下的元素 17 print(list1.symmetric_difference(list2)) #运算符表达对称差集 d = t ^ s 18 #差集1与2的差集,1与 1和2的交集之外的元素 19 print(list1.difference(list2)) #运算符表达交集 c = t - s 20 21 22 #子集 23 list3 = set([1,3,7]) 24 25 #3是1的子集,返回为True 26 print(list3.issubset(list1)) 27 #1是3的父集,返回为True 28 print(list1.issuperset(list3)) 29 30 #3与4有没有交集(如果3和4没有交集则返回true) 31 list4 = set([5,6,8]) 32 print(list3.isdisjoint(list4))
集合的增删
1 #集合的添加 无序的 2 list1.add(999) 3 list1.update([999,77,55]) 4 print(list1) 5 6 #集合的删除 7 print(list1.pop())#删除任意的,并返回删除的那个内容 8 print(list1.remove(44444))#删除不存在的会报错 9 list1.discard(999999)#删除不存在的不会报错
Powers a lot like real estate.Its all about location, location, location.The closer you are to the source,the higher your property value.