02_Python基本数据类型
一、什么是数据
数据是描述客观事物的字符(比如95,不同的语义可表示成绩或体重),是计算机可以操作的对象,能够被计算机识别并输入给计算机处理的符号集合。
数据不仅仅包含整形,还包括图像、音乐、视频等非数值类型。
二、什么是数据类型
变量是存储在计算机内存中的数据,这就意味着在创建变量的时候会在内存中开辟一块内存空间。
变量的数据类型决定了如何将这些值存储到计算机内存中。不同的变量使用不同的类型的数据去表示
Python中的数据类型
- 整型(int)
- 布尔型(bool)
- 字符串(str)
- 元组(tuple)
- 列表(list)
- 字典(dict)
- 集合(set)
Python中类型转换
int -> str 和 int -> bool
1.int 转 str str(666) str1 = '666' 2.int 转 bool 非零即真,零表示假
str -> int 和 str -> bool
#str -> int 前提是字符串全是由数字组成的 i = int('666') #str -> bool 非空为真,空字符串为假。由空格组成的字符串为真 str='' #空字符串为假 str=' ' #非空为真
bool -> int 和 bool -> str
1 #bool与int 2 i = int(True) 3 print(i) #1 4 5 i = int(True) 6 print(i) #0 7 8 9 #bool 与 str 10 #用引号引起来即可 ,实际应用不是很多
三、Python的数据类型
整形(int)
Python可以处理任意大小的整数,它们的表示方法和数学中一摸一样,主要功能是用来运算。
1 #bit_length() 当十进制用二进制表示时,最少使用的位数 2 i = 3 3 print(i.bit_length()) # 0000 0011 2位 4 print((4).bit_length()) # 0000 0100 3位
布尔型(bool)
真 : 1 True.
假: 0 False.
字符串(str)
字符串的索引
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。
1 a = "ABCDEFGHRGK" 2 print(a[0]) #A 3 print(a[1]) #B 4 print(a[2]) #C 5 print(a[3]) #D 6 print(a[4]) #E
字符串的切片
字符串的截取就是索引:索引(索引:索引:步长)之间的距离,截取字符串的一段,形成一个新的字符串,原则:顾头不顾尾 。 倒叙取必须加负号。
1 a = "ABCDEFGHRGK" 2 print(a[0:3])#截取ABC 3 print(a[-3:])#截取RGK 4 print(a[3:])#截取D~K 5 print(a[0:7:2])#截取A C E G 6 print(a[-1:-7:-2])#截取K R G 倒叙取,必须加负号
字符串的常用方法
1 str1 = 'String Operations' 2 #1. 只首字母大写,其他字符全小写 3 print(str1.capitalize()) 4 #2. 大小写反转 5 print(str1.swapcase()) 6 #3. 被非字母割开的部分,首字母大写,其他字符小写 7 print(str1.title()) 8 #4. 全部变成大写 实际应用:验证码 9 print(str1.upper()) 10 #5. 全部变成小写 11 print(str1.lower()) 12 #6. 1.返回长度为width的字符串,并使得自身居中。 2. 填充字符 13 print(str1.center(20,'*')) 14 #7. 碰到tab键,给你填充到8个。 15 print(str1.expandtabs()) 16 #8. 返回在片段s[start:end]内找到子串sub的字符串中的最低索引,否则返回-1 17 print(str1.find('ring')) 18 #9. 判断字符串是否以xxx为开头 19 print(str1.startswith('str')) 20 #10. 判断字符串是否以xxx为结尾 21 print(str1.endswith('tions')) 22 #11. 去除字符串前后的空格和换行符,tab键 任意设定的字符 ****** 实际应用:密码输入 23 print(str1.strip()) 24 #12. strip 是可迭代的,是否在前后端,除非被挡着,不管顺序,不管整体 25 s1 = "http://www.baidu.com" 26 print(str1.strip("htp:/")) 27 #13. 只去除前面空格,换行符,tab键 28 print(str1.lstrip()) 29 #14. 只去除后面空格,换行符,tab键 30 print(str1.rstrip()) 31 #15. 字符串切割 : str -> list方法;还可以控制切割次数以及按那个字符切割 32 print(str1.split()) 33 #16. 替换某些元素 34 print(str1.replace('string','str')) 35 #17. 计算某些元素出现的次数 36 print(str1.count('i')) 37 #18. 计算字符串长度 38 print(len(str1)) 39 #19. 判断是否由 字符或数字组成,由字母组成,由数字组成 40 s1 = 'Python' 41 s2 = 'Python123' 42 s3 = '123456' 43 print(s1.isalpha()) #所有字符都是字母 44 print(s1.isalnum()) #字符串中的所有字符都是字母数字且至少有一个字符 45 print(s1.isdigit()) #所有字符都是数字 为True 46 #10. format的三种格式化方式 47 print("我叫{name},今年{age}岁,爱好{hobby}".format(name = '短毛兔',age=22,hobby='Python')) 48 print("我叫{0},今年{1}岁,爱好{2}".format('短毛兔',22,'Python')) 49 print("我叫{0},今年{1}岁,爱好{2},我正在学习{2}".format('短毛兔',22,'Python'))
四、for循环
用户按照顺序循环可迭代对象的内容。Python中for循环,可以遍历任何序列项目,如一个列表一个字符串。
for循环---语法
1 for iterating_var in sequence: 2 statements(s)
1 str1 = 'Python is an easy to learn.' 2 3 for i in str1: 4 print(i) 5 6 7 fruits = ('banana','apple','mango') 8 9 for i in fruits: 10 print("水果 : " + i)
五、元组(Tuple)
元组被称为只读列表,即数据可以被查询,但不能被修改,可以被看作只读列表。所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
元组常用方法
1 tup1 = ('Google', 'Runoob', 1997, 2000,[1,2,3]) 2 #1.元组的遍历 3 for i in tup1: 4 print(i) 5 6 #2.元组的长度 7 print(len(tup1)) 8 9 #3.统计o在tup1中出现的次数 10 print(tup1.count(0)) 11 12 #4.元组不能被修改,元组的儿子不能被修改,元组的孙子如果为列表、字典的话可以修改 13 #元组中列表中的2改为0 14 tup1[4][1] = 0 15 print(tup1)
六、列表(List)
列表是Python中最基本的数据结构。序列中的每个元素都分配一个索引,第一个索引是0,第二个索引是1,依此类推。
对列表进行的操作包括索引、切片、尾部追加、任意位置插入、插入一个迭代元素、根据索引删除元素、删除指定元素、清空列表、删除列表、修改列表元素、查询元素索引。
以及常用的操作:获取列表长度、统计某个字符出现的次数、列表排序等。
增(append、insert、extend)
append : 在列表最后追加元素
insert : 任意位置插入元素
extend : 在列表末尾一次性追加另一个序列中的多个值,操作的是迭代元素
1 list1 = ['a','b','zhangsan','lisi',5,6,7,True,False,True] 2 3 #1.list中元素的类型 4 print(list1[7],type(list1[7])) # list1[7] True <class 'bool'> 5 #2.追加 6 list1.append('end') #append object to end 7 8 #3.插入 9 list1.insert(2,'2') #insert object before index 10 print(list1[2],type(list1[2])) #<class 'str'> 11 12 #4.迭代插入 会把 迭代体 拆成一个个插入,符号也 13 list1.extend('1,2,3')#['a', 'b', 'zhangsan', 'lisi', 5, 6, 7, True, False, True, '1', ',', '2', ',', '3'] 14 list1.extend() 15 print(list1)
删(pop、remove、clear、del)
pop :删除指定索引位置的元素;默认删除最后一个。根据索引删元素,返回被删除的值。
remove :删除列表中某个元素,没有返回值。
clear :清空列表,内存中不回收列表的资源
del :删除列表,释放列表所占用的资源;可以按照索引删、切片删
1 list1 = [1,2,3,4,5,6,7,8,9,10] 2 #1.pop删除指定索引位置元素 3 list1.pop() # result = [1, 2, 3, 4, 5, 6, 7, 8, 9] 4 5 #2.remove删除元素 6 list1.remove(9) # result = [1, 2, 3, 4, 5, 6, 7, 8, 10] 7 8 #3.clear 清空链表 9 list1.clear() # result = [] 10 11 #4.del 删除链表 12 del list1 # 再打印list1会报错 13 del list1[5] # result = [1, 2, 3, 4, 5, 7, 8, 9, 10] 14 del list1[1:11:2] #result = [1, 3, 5, 7, 9] 15 16 print(list1)
改
1 list1 = [1,2,3,4,5,6,7,8,9,10] 2 #1.按照索引改 3 #list1[0] = '1' 4 5 #2.按照切片更改 6 #list1[0:1] = ['list','num'] #['list', 'num', 2, 3, 4, 5, 6, 7, 8, 9, 10] 7 #list1[0:2] = '努力' #['努', '力', 3, 4, 5, 6, 7, 8, 9, 10] 8 #list1[0:1] = '努力' #['努', '力', 2, 3, 4, 5, 6, 7, 8, 9, 10] 9 list1[0:2] = '强' #['强', 3, 4, 5, 6, 7, 8, 9, 10]
查
l1 = [1,3,6,8,7,4,2,9,10] #查 按切片,按索引去查 l1[0] l1[0:3] #for 循环查 for i in l1: print(i)
其他操作:获取长度、统计某个元素出现的次数、查找元素,返回元素第一次出现的索引、排序、倒置
l2 = [1,3,6,8,7,4,2,9,10] # len 长度 print(len(l1)) #count 出现次数 print(l1.count(True)) #index 通过元素找索引 print(l2.index('taibai')) #sort 从小到大 print(l2.sort()) #sort(reverse) 从大到小 print(l2.sort(reversed = True)) #倒置 print(l2.reverse())
七、字典(dict)
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典能存放大量的类型,且关联性较强,可存放任意类型。
字典的常用操作(增、删、改、查)
1 dic = {'name':'Python','version':3.6,'code':3} 2 3 # 1.增 4 #1. 添加,如果存在就覆盖,如果不存在就增加 5 dic['local']; #这样写错误 ,如果没有value的话,就 等于None 6 dic['local'] = None; 7 dic['local'] = 'US' 8 print(dic) 9 10 #1.1 添加,如果存在就忽略,如果不存在就添加 11 dic.setdefault('name','Python3') #dic中存在name,所以无操作 12 dic.setdefault('name1','Python3') 13 print(dic) 14 15 # 2.删 16 #2. 删除 pop 通过键删除,返回删除键的值 17 print(dic.pop('code')) #3 18 19 print(dic.pop('code')) #error 如果删除不存在的键会报错 20 #2.1 pop 的第二种用法,两个参数 21 print(dic.pop('code','没有此键')) 22 23 #2.2 clear 清空dic 24 dic.clear() 25 print(dic) #{} 26 27 #2.3 del 删除dic 28 del dic 29 print(dic) #error 30 31 #2.4 根据键来删除,没有返回值 32 del dic['name'] 33 print(dic) # {'version': 3.6, 'code': 3} 34 35 #2.5 随机删除 返回值元组,默认删除最后一个 36 dic.popitem() 37 print(dic) #{'name': 'Python', 'version': 3.6} 38 39 40 #3.改 41 #3.1 dic[key] 如果key存在,就覆盖。不存在的话,就添加 42 dic['name'] = 'Java' 43 print(dic) 44 #3.2 dic.update() 如果有相同键->覆盖,没有的添加 45 dic.update({'name':'JAVA'}) 46 dic.update({'RuntimePlatform':'Win10'}) 47 print(dic) 48 49 #4.改 50 #4.1 查 根据键查 51 print(dic['name']) #Python 52 print(dic['name1']) # error 查询不存在的键会报错 53 54 #4.2 get方式查 查询不存在的键,不会报错 55 print(dic.get('name')) #Python 56 print(dic.get('name1')) #None 57 print(dic.get('name1','此键不存在')) #None 58 59 #4.3 for 循环查 60 for i in dic : 61 print(i,dic[i])
字典的其他操作(获取所有的键值对、获取所有的键、获取所有的值)
#获取所有的键(key) #1 遍历dic for i in dic: print(i) #2 通过dic.keys for k in dic.keys(): print(k) #获取所有的值 #1 通过key for i in dic: print(dic[i]) #通过dic.values for v in dic.values: print(v) #获取多有的键值对 #1 返回元组类型 for i in dic.items: print(i) #2 返回所有键值 for k,v in dic.items: print(k,v) #3 返回所有键值 for k in dic: print(k,dic[k])