Python基础三(基础数据类型)
一、引子
1.什么是数据?
x = 10, 10就是我们要存储的数据
2.为何数据要分不同的类型
数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示
3.数据类型
不可变:int str bool tuple
可变: list dict set
二、基础数据类型
2.1数字int.
数字主要是用于计算的,使用方法并不是很多,就记住一种就可以:
1 #bit_length 2 v = 10 3 data = v.bit_length 4 print (data)
2.2布尔值bool
布尔值就两种: True,False。就是反应条件的正确与否
真 1 True
假 0 False
2.3 字符串str
2.3.1、字符串的索引与切片
索引即下标,就是字符串组成的元素从第一个开始,初识索引为0以此类推。
1 a = 'ABCDEFGHIJK' 2 print(a[0]) 3 print(a[3]) 4 print(a[5]) 5 print(a[7])
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)。
1 a = 'ABCDEFGHIJK' 2 3 print (a[0:3]) 4 print (a[2:5]) 5 print (a[0:]) #默认到最后 6 print (a[0:-1]) #-1就是最后一个 7 print (a[0:5:2]) #加步长 8 print (a[5:0:-2]) #反向加步长
2.3.2、字符串常用方法。
1 #captalize,swapcase,title 2 print(name.capitalize()) #首字母大写 3 print(name.swapcase()) #大小写翻转 4 msg='egon say hi' 5 print(msg.title()) #每个单词的首字母大写 6 7 # 内同居中,总长度,空白处填充 8 ret2 = a1.center(20,"*") 9 print(ret2) 10 11 #数字符串中的元素出现的个数。 12 # ret3 = a1.count("a",0,4) # 可切片 13 # print(ret3) 14 15 a2 = "hqw " 16 # 前面的补全 17 # 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。 18 ret4 = a2.expandtabs() 19 print(ret4) 20 21 a4 = "dkfjdkfasf54" 22 #startswith 判断是否以...开头 23 #endswith 判断是否以...结尾 24 # ret4 = a4.endswith('jdk',3,6) # 顾头不顾腚 25 # print(ret4) # 返回的是布尔值 26 # ret5 = a4.startswith("kfj",1,4) 27 # print(ret5) 28 29 #寻找字符串中的元素是否存在 30 # ret6 = a4.find("fjdk",1,6) 31 # print(ret6) # 返回的找到的元素的索引,如果找不到返回-1 32 33 # ret61 = a4.index("fjdk",4,6) 34 # print(ret61) # 返回的找到的元素的索引,找不到报错。 35 36 #split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。 37 # ret9 = 'title,Tilte,atre,'.split('t') 38 # print(ret9) 39 # ret91 = 'title,Tilte,atre,'.rsplit('t',1) 40 # print(ret91) 41 42 #format的三种玩法 格式化输出 43 res='{} {} {}'.format('egon',18,'male') 44 res='{1} {0} {1}'.format('egon',18,'male') 45 res='{name} {age} {sex}'.format(sex='male',name='egon',age=18) 46 47 #strip 48 name='*egon**' 49 print(name.strip('*')) 50 print(name.lstrip('*')) 51 print(name.rstrip('*')) 52 53 #replace 54 name='alex say :i have one tesla,my name is alex' 55 print(name.replace('alex','SB',1)) 56 57 #####is系列 58 name='jinxin123' 59 print(name.isalnum()) #字符串由字母或数字组成 60 print(name.isalpha()) #字符串只由字母组成 61 print(name.isdigit()) #字符串只由数字组成
2.3.3、字符串补充
1 #join 2 s = 'alexwusir' 3 s1 = '_'.join(s) 4 print(s1) 5 #while while else break continue 6 for i in s: 7 print(i) 8 if i == 'e': 9 break 10 for i in s: 11 if i == 'e': 12 continue 13 print(i)
2.4 元组tuple。
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。
例: (1,2,3) ('a','b','c')
1 #tuple 2 tu = (1,2,'wusir','taibai',[2,3,4],True) 3 for i in tu: 4 print(i) 5 print(tu[2:]) 6 #儿子不能更改,但是孙子有可能更改 7 tu1 = (1,2,'wusir',[1,2,3],(2,3,4),'taibai,True') 8 tu1[3].pop(1) 9 print(tu1) 10 tu1[3].append('taibai') 11 print(tu1) 12 print(len(tu1)) 13 print(tu.count(1)) #True 默认是1 14 print(tu.index('wusir'))
2.5 列表list。
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且它里面可以存放各种数据类型比如:
li = ['alex',123,True,(1,2,3,'wusir'),[1,2,3,'小明'],{'name':'alex'}]
列表相比于字符串,不仅可以存储不同的数据类型,而且可以存储大量数据,32位python的限制是536870912个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
2.5.1、增。
1 li = [1,'a','b',2,3,'a'] 2 # li.insert(0,55) #按照索引去增加 3 # print(li) 4 # 5 # li.append('aaa') #增加到最后 6 # li.append([1,2,3]) #增加到最后 7 # print(li) 8 # 9 # li.extend(['q,a,w']) #迭代的去增 10 # li.extend(['q,a,w','aaa']) 11 # li.extend('a') 12 # li.extend('abc') 13 # li.extend('a,b,c') 14 # print(li) 15 16 列表的增
2.5.2、删。
1 # l1 = li.pop(1) #按照位置去删除,有返回值 2 # print(l1) 3 4 # del li[1:3] #按照位置去删除,也可切片删除没有返回值。 5 # print(li) 6 7 # li.remove('a') #按照元素去删除 8 # print(li) 9 10 # li.clear() #清空列表 11 12 列表的删
2,5.3、改。
# 改 # li = [1,'a','b',2,3,'a'] # li[1] = 'dfasdfas' # print(li) # li[1:3] = ['a','b'] # print(li) 列表的改
2.5.4、查。
1 l1 = ['alex','taibai',True,'wusir','ritian',3,2,True,] 2 #按切片、索引查 3 l1[0] 4 l1[0:3] 5 6 #for 循环查 7 for i in l1: 8 print(i)
2.5.5、其他操作。
1 l1 = ['alex','taibai',True,'wusir','ritian',3,2,True,] 2 l2 = [1,3,6,8,7,4,2,9,10] 3 #len 长度 4 print(len(l1)) 5 #count 出现次数 6 ret = l1.count(True) 7 print(ret) 8 #index 通过元素找索引 9 print(l1.index('taibai')) 10 #sort 从小到大 11 l2.sort() 12 print(l2) 13 #sort(reverse) 从大到小 14 l2.sort(reverse=True) 15 print(l2) 16 #倒叙 17 l2.reverse() 18 print(l2)
2.5.6、列表的嵌套。
1 l1 = ['小新','egon','wusir',[99,'tiabai','ritian',[,2,3]],2] 2 a = l1[1].capitalize() 3 l1[1] = a 4 l1[1] = l1[1].capitalize() 5 l1[1] = 'Alex' 6 print(l1) 7 print(l1[0]) 8 print(l1[3]) 9 l = l1[3] 10 s = l[1].upper() 11 l1[3][1] = s 12 l1[3][1] = l1[3][1].upper() 13 print(l1) 14 l1[3][0] = '100' 15 print(l1) 16 l1[3][0] = str(l1[3][0] + 1) 17 print(l1)
2.6 字典dict。
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
2.6.1 增。
1 dic = {"name":"jin","age":18,"sex":"male"} 2 #有key则覆盖,没有追加 3 ''' 4 dic['name'] = 'tai' 5 print(dic) 6 dic['name2'] = 'tai' 7 print(dic) 8 ''' 9 #有key,原来的不变,没key,有参数写参数,没参数,None 10 ''' 11 dic.setdefault('hobby')#没参数 none 12 print(dic) 13 dic.setdefault('hobby','aaa')#有参数,写参数 14 print(dic) 15 dic.setdefault('name','taibai')#有key,原来的不变 16 print(dic) 17 '''
2.6.2 删除。
1 dic = {"name":"jin","age":18,"sex":"male"} 2 ''' 3 #pop有返回值,没key不报错 4 dic.pop('name') 5 print(dic) 6 dic.pop('name2',None) 7 print(dic) 8 #clear清空字典 9 dic.clear() 10 print(dic) 11 #del 按照key删value 12 del dic['name'] 13 print(dic) 14 '''
2.6.3 改。
1 ''' 2 #dic 不变,dic2有则覆盖,没有则追加 3 dic = {"name":"jin","age":18,"sex":"male"} 4 dic2 = {"name":"aaa","yy":'zzz',"sex":"male"} 5 dic2.update(dic) 6 print(dic2) 7 #覆盖 8 dic['name'] = 'tai' 9 print(dic) 10 '''
2.6.4 查
1 dic = {"name":"jin","age":18,"sex":"male"} 2 #print(dic['name']) 3 #print(dic['name2']) #没key报错 4 5 #print(dic.get('name')) 6 #print(dic.get('name2')) 7 #print(dic.get('name2','没有键值对')) 8 ''' 9 for i in dic: #打印key 10 print(key) 11 for i in dic.values(): #打印values 12 print(i) 13 for i in dic.items(): #打印键值对 14 print(i) 15 '''
2.6.5 字典的嵌套
1 dic = { 2 'name':'金鑫', 3 'name_list':[1,2,3,'李杰'], 4 1:{ 5 'python10':['小黑','萌哥'], 6 '老男孩':{'name':'oldboy','age':56} 7 } 8 } 9 ''' 10 #1,[1,2,3,'李杰']追加'wusir' 11 dic['name_list'].append('wusir') 12 print(dic) 13 #2, ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥 14 dic[1]['python10'].insert(1,'华哥') 15 print(dic) 16 #3, {'name':'oldboy','age':56} 添加一个键值对,hobby:男人 17 dic[1]['老男孩'].setdefault('hobby','man') 18 print(dic) 19 '''
三,其他(for,enumerate,range)。
for循环:用户按照顺序循环可迭代对象的内容。
msg = '老男孩python是全国范围内最好的python培训机构' for item in msg: print(item) li = ['alex','银角','女神','egon','太白'] for i in li: print(i) dic = {'name':'太白','age':18,'sex':'man'} for k,v in dic.items(): print(k,v)
range:指定范围,生成指定数字。
1 #range当做:范围列表[],列表中的元素是数字,且可控的有效数字范围 2 #一般与for 配合使用 3 for i in range(1,10): #[1,2,3,4...9] 4 print(i) 5 for i in range(1,101): # 6 print(i) 7 for i in range(11): # 8 print(i) 9 for i in range(1,10,2): # [1,3,5,7,9] 10 print(i) 11 for i in range(10,0,-1): 12 print(i) 13 for i in range(10,-2,-1): 14 print(i) 15 16 l1 = [1,2,3,'alex',[2,3,'wusir'],7] 17 for i in l1: 18 if type(i) == list: 19 for j in i: 20 print(j) 21 else: 22 print(i)