数据类型
1、字符串类型string
1)字符串格式化:
1 name = ‘小小兔‘ 2 time = ‘2020/04/18‘ 3 4 # 方法一:字符串连接(最简单,不推荐使用),用“+”连接,直接把输出的字符串和变量连接起来。 5 s1 = ‘欢迎‘+name+‘登录,今天的时间是‘+time#在内存里面存5个变量(name,time,欢迎,登录今天的时间,s1) 6 print(s1) 7 8 # 方法二:占位符连接字符串(推荐使用),多个变量后面跟值必须加括号 9 s2 = ‘欢迎%s登录,今天的时间是%s‘ % (name, time)#在内存里存3个变量(name,time,s2) 10 print(s2) 11 s3 = ‘欢迎%s登录‘ % name 12 print(s3) 13 14 # 占位符有常用的有三种: 15 # %s:字符串,后面跟什么类型都可以 16 # %d:整数型,后面必须跟整数型 17 # %f:浮点型,后面必须跟小数型,默认保留6位小数,例 %.2f 保留2位小数 18 age = 18 19 score = 98.8888888 20 s4 = ‘年龄是%d,分数是%.2f‘ % (age, score) 21 s5 = ‘年龄是%s,分数是%s‘ % (age, score) 22 print(s4, s5) 23 24 # 方法三:使用{}(和%s一样,占位,参数多,容易弄混) 25 s6 = ‘年龄是{},分数是{}‘.format(age, score) 26 print(s6) 27 28 # 方法四:使用{}和format,适用于参数多,不需要按照顺序来 29 s7 = ‘欢迎{name}登录,今天的时间是{time}‘.format(time=‘2020/04/18‘, name=‘小小兔‘) 30 print(s7)
注意:参数多,使用占位符不容易一一对应,容易弄错顺序,如果使用{}方式可以不需要按照顺序来,比较直观
2)字符串常用方法
1 s = ‘hahaha‘ 2 print(s.count(‘a‘))#找某个元素出现的次数 3 4 print(s.find(‘a‘))#找某个元素的下标 5 6 print(s.isdigit())#判断是否为纯数字 7 8 print(s.startswith(‘h‘))#判断字符串是否以什么开头,是返回True,否返回False 9 print(s.endswith(‘com‘))#判断字符串是否以什么结尾,是返回True,否返回False 10 11 print(s.lower())#字符串全部变成小写 12 print(s.upper())#字符串全部变成大写 13 14 s1 = ‘ hahaha \n‘ 15 s2 = ‘hahaha,‘ 16 print(s1.strip())#默认去掉字符串两边的空格和换行符\n 17 print(s2.strip(‘,‘))#指定逗号,可以去掉逗号的字符串 18 19 print(s.replace(‘a‘, ‘1‘))#替换字符串 20 print(s.replace(‘a‘, ‘2‘, 1))#指定1,替换第1次出现的 21 s3 = ‘123 123‘ 22 print(s3.replace(‘ ‘, ‘‘))#去掉字符串中间的空格 23 24 s4 = ‘zyb,cmc,wy,lj,lxy‘ 25 s5 = ‘zyb cmc wy lj lxy‘ 26 s6 = ‘zyb.cmc.sy‘ 27 print(s4.split(‘,‘))#指定逗号,按逗号分割字符串,把分割的字符串放到list里[‘zyb‘,‘cmc‘,‘wy‘,‘l‘] 28 print(s5.split())#默认以空格进行分割 29 print(s6.split(‘,‘))#若分割符号填写错误,把原始字符串直接放到list里面 30 31 l1 = [‘zyb‘, ‘cmc‘, ‘wy‘, ‘lj‘, ‘lxy‘] 32 print(‘,‘.join(l1))#把list变成字符串,把list每个元素通过逗号连接起来变成字符串 33 34 35 36 print(s.index(‘a‘))#找某个元素的第一次出现的下标 37 print(s.index(‘a‘,2))#指定2,从下标2开始找 38 # find和index区别:找不存在的元素,index找不到会报错,find找不到会返回-1,不会报错 39 print(s[0]) 40 41 # for i in s:#字符串可以循环(因为有下标) 42 # print(i) 43 44 print(s.islower())#判断字符串是否全部小写 45 print(s.isupper())#判断字符串是否全部大写 46 47 #001,002,003,004..... 48 s7 = ‘5‘ 49 print(s7.zfill(3))#补零,传值3,不够3位的补零 50 51 print(s.capitalize())#首字母大写 52 53 s8 = ‘欢迎光临‘ 54 print(s8.center(50, ‘*‘))#输出时居中字符串,长度不够50的用*补齐 55 56 s9 = ‘ ‘ 57 print(s9.isspace())#判断字符串是否为空格 58 59 print(s.isalnum())#如果是大小写字母、汉字、数字返回true,其他的字符串都返回false 60 print(s.isalpha())#如果是大小写字母、汉字返回true,其他的字符串都返回false 61 62 s10 = ‘编号是,{name},{age}‘ 63 print(s10.format(name=1, age=2))#字符串格式化,直接传值 64 print(s10.format_map({‘name‘: 1, ‘age‘: 35}))#字符串格式化使用,必须传字典 65 66 print(s1.lstrip())#只去掉前面的 67 print(s1.rstrip())#只去掉后面的
2、整数类型int
3、浮点类型float
4、列表list
1)列表常用方法
1 s = ‘王一,王二,王三,王四‘#定义字符串,字符串有下标,但无法取其中的某个值 2 l2 = [‘王一‘, ‘王二‘, ‘王三‘, ‘王四‘]#定义列表,根据索引可以从中取某个值,下标从0开始计数 3 # 索引/下标0 1 2 3 4 l3 = []#定义空列表 5 6 #增 7 l2.append(‘小小兔‘)#append增加到最后 8 print(l2) 9 l2.insert(1, ‘小小月‘)#insert增加指定位置,1代表下标 10 print(l2) 11 12 #删 13 l2.pop(1)#不传下标删除最后一个值,传入下标删除指定位置 14 print(l2) 15 del l2[2]#删除指定位置的值 16 print(l2) 17 l2.remove(‘王四‘)#删除指定的值(删除不存在元素会报错) 18 print(l2) 19 l2.clear()#清空列表 20 print(l2) 21 22 #改 23 l2[0] = ‘王一一‘#修改指定位置的值 24 print(l2) 25 26 #查 27 print(l2[0])#获取指定元素,[-1]代表最后一个元素 28 29 l4 = [1, 54, 77, 2, 3, 54, 4] 30 #其他方法 31 print(l4.count(54))#某个元素出现的次数 32 print(l4.index(77))#取索引(找不存在的元素,报错) 33 #.sort()先排序再打印,如果打印print(l4.sort()),则输出结果为None 34 l4.sort()#升序 35 print(l4) 36 l4.sort(reverse=True)#降序 37 print(l4) 38 l5 = l4.copy()#复制 39 print(l5) 40 l4.extend(l2)#扩展列表,把l2的值加到l3里 41 print(l4) 42 l4.reverse()#反转数组 43 print(l4) 44 45 #二维数组的取值: 46 infos = [ 47 [‘小黑‘, ‘1111‘, ‘北京‘], 48 [‘小贝‘, ‘2222‘, ‘上海‘], 49 [‘小明‘, ‘3333‘, ‘广州‘] 50 ] 51 print(infos[-1][0]) 52 53 list1 = [1, 2, 3, 4]#一个普通的数组 54 list2 = [‘marry‘, ‘lily‘, [50, ‘monkey‘]]#二维数组 55 list3 = [‘name‘, ‘sex‘, [‘lily‘, 124, [‘aaa‘, ‘bb‘]]]#三维数组
2)切片
切片是获取列表的值,它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束。切片是不包含后面那个元素的值的,记住顾头不顾尾;前面的下标如果是0的话,可以省略不写。切片后面还有可以写一个参数,叫做步长,也就是隔多少个元素,取一次,默认可以不写,也就是隔一个取一次,切片操作也可以对字符串使用,和列表的用法一样。
# 切片:list范围取值的一种方式 l = [1,2,3,4,5,6,7,8,9,10] print(l[0:5])#切片顾头不顾尾 print(l[:5])#冒号前面省略,默认是0 print(l[5:])#冒号后面省略,默认取到尾 print(l[:])#两边都不写,默认取所有 print(l[1:5:2])#从第2个元素开始,到第5个结束,隔一个取一个 print(l[::2])#从头到尾,隔一个取一个 print(l[::-1])#若步长为负数,就是从后往前取 print(l[-1:-11:-1])#步数为负数,前面指定范围用的下标也得写负数 t = (‘a‘, ‘b‘, ‘c‘) print(t[1:3])#元祖可以通过下标方式取值 s = ‘abcdefg‘ print(s[1:2])#字符串也可以通过下标方式取值
列表小练习:
1 # 欢迎xxx登录,今天的时间是xxx。登录错误次数过多,最多登录3次 2 # 分析 3 # 1、循环3次 4 # 2、输入账号和密码 5 # 3、判断账号和密码是否存在 in 6 # 4、根据账号取到账号的下标,然后取到密码 7 # 5、判断账号和密码是否正确 8 9 import datetime 10 today = datetime.datetime.today() 11 usernames = [‘小黑‘, ‘小贝‘, ‘小白‘] 12 passwords = [‘123456‘, ‘1111‘, ‘1‘] 13 for i in range(3): 14 username = input(‘输入username:‘) 15 if usernames.count(username) > 0: 16 index = usernames.index(username) 17 password = passwords[index] 18 pwd = input(‘输入password:‘) 19 if password == pwd: 20 print(‘欢迎【%s】登录,今天的时间是%s‘ % (username, today)) 21 break 22 else: 23 print(‘密码错误‘) 24 else: 25 print(‘账号不存在‘) 26 else: 27 print(‘登录错误次数超过3次‘)
5、字典
字典具有极快的查找速度;字典是一种key-value的数据类型,比如说要存每个人的信息,那么每个人的编号就是key,value就是每个人的信息,这样的话,一个字典就能存所有人的信息了。字典的定义使用{},每个值用“,”隔开,key和value使用“:”分隔。字典是无序的,因为它没有下标,用key来当索引,所以是无序的。字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复。
1 stu_info = { 2 ‘name‘: ‘小黑‘, 3 ‘phone‘: ‘1111‘, 4 ‘addr‘: ‘北京‘ 5 } 6 7 # 增 8 stu_info[‘age‘] = 18#新增 9 stu_info.setdefault(‘qq‘, ‘1234567‘)#新增 10 print(stu_info) 11 # []和setdefault的区别:key存在,[]会替换values,setdefault不做修改。key不存在的时候没区别。 12 13 # 删 14 stu_info.pop(‘age‘)#删除(不存在的key,报错) 15 del stu_info[‘name‘]#删除 16 print(stu_info) 17 18 # 改 19 stu_info[‘name‘] = ‘小强‘#修改(key存在,使用[],就是修改) 20 print(stu_info) 21 22 # 查 23 print(stu_info.get(‘name‘))#查询(key不存的时候,get取值none) 24 print(stu_info.get(‘qq‘, ‘不存在‘))#get不到值,默认值返回值 25 print(stu_info[‘phone‘])#查询(key不存的时候,[]报错) 26 27 28 # 其他方法 29 new_stu_info = stu_info.copy()#复制 30 stu_info.clear()#清空字典 31 print(stu_info.keys())#打印字典所有的key 32 print(stu_info.values())#打印字典所有的values 33 print(stu_info.items())#字典转换成list 34 stu_info.update(qq=‘890344‘)#更新字典值,key存在就更新,key不存在就添加 35 print(stu_info)
6、元祖tuple
1 t = (1, 2, 2, 3, 2)#元祖不能修改 2 print(t[0])#元祖可以取值 3 print(t[-1]) 4 5 for i in t:#元祖可以循环 6 print(i) 7 8 # 其他方法: 9 print(t.index(3))#找某个元素的下标 10 print(t.count(2))#找某个元素出现的次数 11 12 t1 = (‘ss‘,)#如果定义元祖只有一个元素,后面加个逗号,才会认为是元祖 13 print(t1)
7、布尔类型
布尔类型就是真True和假Fasle,只有这两种
8、集合set
1 s = {1, 2, 3, 4, 5, 5, 6, 7}#定义集合 2 print(s)#1.集合天生去重;2.集合是无序的 3 4 s2 = set()#空集合 5 s3 = {}#空字典 6 7 for i in s:#集合可以循环 8 print(i) 9 10 l = [1, 2, 3, 4, 5, 5, 6, 7] 11 l = list(set(l))#list去重:list先转成set去重后在转成list 12 print(l) 13 14 15 s.add(8)#添加元素 16 print(s) 17 s.update({9, 5, 6})#把另外一个集合加到这个集合里面 18 print(s) 19 s.remove(4)#删除指定元素 20 print(s) 21 22 #关系测试(交际,并集,差集,对称差集) 23 l1 = [1, 2, 3, 4] 24 l2 = [2, 3, 4, 5] 25 l1 = set(l1) 26 l2 = set(l2) 27 # 取交集:就是两个集合里面相同的元素 28 print(l1 & l2)#取交集 29 print(l1.intersection(l2))#取交集 30 31 # 取并集:就是把两个集合合并到一起 32 print(l1 | l2)#取并集 33 print(l1.union(l2))#取并集 34 35 # 取差集:在a集合里面存在,在b集合里面不存在的 36 print(l1 - l2)#取差集 37 print(l1.difference(l2))#取差集 38 39 # 取对称差集:把a集合和b集合里面相同的元素去掉,剩下的 40 print(l1 ^ l2)#取对称差集 41 print(l1.symmetric_difference(l2))#取对称差集 42 43 44 l3 = {1, 2, 3, 4, 5, 6, 7, 8, 9} 45 l4 = {2, 3, 4, 5} 46 print(l3.issuperset(l4))#判断a集合是不是b集合的父集 47 print(l4.issubset(l3))#判断a集合是不是b集合的子集
原文:https://www.cnblogs.com/zhangxiaowai/p/12776126.html