一、基础数据类型
1、数字int
数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:
#bit_length() 当十进制用二进制表示时,最少使用的位数
# -*- coding:UTF-8 -*- v = 11 data = v.bit_length() print(data) # 二进制: # 0 0 0 0 0 0 1 0 # 十进制: # 128 64 32 16 8 4 2 1 #因为11小于16,而16占用5位。11最小占用应该为4位。 输出内容为:4
2、布尔值
布尔值就两种:True,False。就是反应条件的正确与否。
真 1 True。
假 0 False。
""" int ---> str :str(int) ##数字转为字符串 str ---> int :int(str) str必须全部是数字组成。 ##字符串转为数字 int --- > bool 0 False 非零 True ##数字转为bool bool ---> int int(True) 1 int(False) 0 ##布尔转为数字 str ---> bool '' False 非空字符串 True ##字符串转为bool. """
3、字符串
3.1、字符串的索引
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。
A = 'alex bog d3dfj%sdkfA' s1 = A[0] print(s1) #输出内容:a s2 = A[3] print(s2) #输出内容:x s3 = A[-1] print(s3) #输出内容:A
3.2、字符串的切片
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)
a = 'ABCDEFGHIJK' print(a[0:4]) #输出: ABCD print(a[2:5]) #输出:CDE print(a[0:]) #后面区间不加表示默认输出到最后。输出:ABCDEFGHIJK print(a[0:5:2]) #加步长,最后面的2为步长。输出:ACE print(a[5:0:-2]) #反向步长。输出:FDB
3.3、字符串的方法
a = 'cd Adfsdfs 12EF dG677JK' #capitaliza方法 首字母大写 print(a.capitalize()) #Cd adfsdfs 12ef %g677jk #swapcase方法 大小写翻转 print(a.swapcase()) #CD aDFSDFS 12ef %g677jk #title 每个单词的首字母大写 print(a.title()) #Cd Adfsdfs 12Ef Dg677Jk #center方法 内容居中,总长度,空白处填充 print(a.center(30)) # cd Adfsdfs 12EF dG677JK 空白处用*填补 r =a.center(30,"*") print(r) #***cd Adfsdfs 12EF dG677JK**** #count方法 统计字符串元素出现的个数 r = a.count("d") #统计“d”在语句中出现的次数 print(r) ## 输出结果: 4 r = a.count("d",0,5) #统计“d”在下标区间为0到5中间出现的次数 print(r) #输出结果: 2 #startwith 判断是否以...开头 s = a.startswith('c') print(s) #返回布尔值:True s = a.startswith('A',3,6) print(s) #在下标3到6间查找是否以大写字母A开头 #判断是否以...结尾 s= a.endswith('k') print(s) ##返回布尔值:false s4 = a.find('A',0,6) print(s4) ##找不到就返回-1(数组下标),找到就返回内容对应的下标,此处返回A对应的数组下标4 #split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。 ret9 = 'title,Tilte,atre,'.split('t') print(ret9) ##输出结果:['', 'i', 'le,Til', 'e,a', 're,'] #strip方法 name = '*start**' #去除语句中所有的“*” print(name.strip('*')) 输出结果: start #去除语句头部的“*” print(name.lstrip('*')) 输出结果: start** #去除语句尾部的“*” print(name.rstrip('*')) 输出结果: *start #replace 替换 name = 'alex say :i have one tesla,my name is alex. print(name.replace('alex','sb',1)) #将Alex替换成sb,后标位置为1时,替换一个。后标位置的数字表示要替换的个数。 #is方法 name = 'jenxin123' print(name.isalnum()) #字符串由字母和数字组成 print(name.isalpha()) #字符串由字母组成 print(name.isdigit()) #字符串由数字组成
4、元组
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
5、列表
5.1、增
li = ['alex',123,True,(1,2,3, ' wusir '),[1,2,3, ' 小明'],{ 'name','alex '}]
#insert 按着索引去增加 # li.insert(0,55) # print(li) # 输出:[55, 'alex', 123, True, (1, 2, 3, ' wusir '), [1, 2, 3, ' xe5xb0x8f xe6x98x8e'], set(['name', 'alex '])] #append 追加到最后 # li.append('aaa') # print(li) #输出内容: [55, 'alex', 123, True, (1, 2, 3, ' wusir '), [1, 2, 3, ' xe5xb0x8f xe6x98x8e'], set(['name', 'alex ']), 'aaa'] #extend 迭代的去增加 # li.extend(['a,q,w']) print(li) #输出内容:['alex', 123, True, (1, 2, 3, ' wusir '), [1, 2, 3, ' xe5xb0x8fxe6x98x8e'], set(['name', 'alex ']), 'a,q,w']
5.2、删
pop 按着位置去删除,有返回值 # l1 = li.pop(1) # print(l1) #输出:123 # print(li) #输出:['alex', True, (1, 2, 3, ' wusir '), [1, 2, 3, ' xe5xb0x8fxe6x98x8e'], set(['name', 'alex '])] #del 按着位置去删除,也可以切片删除,没有返回值 # del li[1:3] # print(li) #输出:['alex', (1, 2, 3, ' wusir '), [1, 2, 3, ' xe5xb0x8fxe6x98x8e'], set (['name', 'alex '])] #remove 按着元素去删除 li.remove(123) # print(li) #输出: ['alex', True, (1, 2, 3, ' wusir '), [1, 2, 3, ' xe5xb0x8fxe6x98x8e'], set(['name', 'alex '])] #clear 清空列表 li.clear()
5.3、改
# li = [1,'a','b','c',2,3] # li[1] = 'dfsdfsdfsdfgbc' # print(li) # 输出:[1, 'dfsdfsdfsdfgbc', 'b', 'c', 2, 3] # li[1:3] = ['c','ddddssgvb'] # print(li)
5.4、查
a = ["a","b","g","c","d","c"] #切片去查,或者循环去查。 其他操作: # count(数)(方法统计某个元素在列表中出现的次数) # print(a.count("a")) #输出:1 # index(方法用于从列表中找出某个值第一个匹配项的索引位置) # print(a.index("c")) #输出:2 # sort (方法用于在原位置对列表进行排序)。 a.sort() print(a) #输出: ['a', 'b', 'c', 'c', 'd', 'g'] print(a.sort()) # None # reverse (方法将列表中的元素反向存放) a.reverse() print(a) # 输出: ['g', 'd', 'c', 'c', 'b', 'a']
6、字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典:存储数据多,关系型数据,查询速度快(二分查找)。 3.6版本之前,字典是无序的,3.6之后字典是有序的。字典的key是唯一的。key 必须是不可变的数据类型。 key:不可变的数据类型(可哈希):str,bool,tuple,int。 value:任意数据类型。 数据类型分类: 不可变的数据类型(可哈希):str,bool,tuple,int 可变的数据类型:dict,list,set。 容器类数据类型:list,tuple,dict,set.
6.1、增
#1、 setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。 dic = { 'name_list':['b哥', '张帝', '人帅', 'kitty'], 'dadong':{ 'name':'dadong', 'age': 46, 'sex': 'ladyboy', }, } dic.setdefault('k','v') print(dic) #2、dic['key1']='value1' ,有则替换,无则添加
6.2、删
1、 pop根据key删除键值对,并返回对应的值,如果没有key,则返回默认的返回值。 dic_pop = dic.pop("name_list",'无返回值') print(dic_pop) #输出:['b哥', '张帝', '人帅', 'kitty'] print(dic) #输出:{'dadong': {'name': 'dadong', 'age': 46, 'sex': 'ladyboy'}} 2、随机删除字典中某个键值对,将删除的键值对元组的形式返回。 dic_pop1 = dic.popitem() print(dic_pop1) #输出:('dadong', {'name': 'dadong', 'age': 46, 'sex': 'ladyboy'}) 3、clear 清空字典 dic_clear = dic.clear() print(dic,dic_clear) #输出: {} None
6.3、改
dic1 = {'name':"jin","age":18,"sex":"male"} dic2 = {"name":"alex","wegint":75} dic2.update(dic1) #将dic1所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中。 print(dic2) #输出:{'name': 'jin', 'wegint': 75, 'age': 18, 'sex': 'male'}
6.4、查
value = dic["name"] print(value) #输出:报错 KeyError: 'name' print(value) #输出: ['b哥', '张帝', '人帅', 'kitty'] value2 = dic.get("123","默认返回值") #输出:默认返回值 print(value2)
6.5、字典的循环
#字典的循环 dic = {"name":"jin","age":18,"sex":"male"} for key in dic: print(key) #输出:name age sex for item in dic.items(): print(item) #输出:('name', 'jin') ('age', 18) ('sex', 'male') for key,value in dic.items(): print(key,value) #输出内容:name jin age 18 sex male
7、练习题
练习一: l1 = [1, 2, 'alex', 'wusir',['oldboy', 'ritian', 10], 'taibai'] #1.将'alex'全部变成大写,放回原处 #2.给['oldboy', 'ritian', 99]追加一个元素'女神' #3.将'ritian'首字母大写,放回原处 #4.将10通过数字相加,或者字符串相加变成100 # l1 = [1, 2, 'alex', 'wusir',['oldboy', 'ritian', 10], 'taibai'] # l1[2]=l1[2].upper() # l1[4].append('女神') # l1[4][1]=l1[4][1].capitalize() # l1[4][2]=str(l1[4][2]+90) # print(l1) # l1[4][2]=int(l1[4][2])-90 # l1[4][2]=str(l1[4][2])+'0' # print(l1) 练习二: #######练习2########### dic = { 'name_list':['东哥', '张帝', '人帅', 'kitty'], '大东':{ 'name':'dadong', 'age': 46, 'sex': 'ladyboy', }, } #1,['大东', '张帝', '人帅', 'kitty']追加一个元素,'骑兵' #2,将kitty全部变成大写。 #3,将老男孩 改成oldboy。 #,将ladyboy首字母大写。 # dic['name_list'].append('骑兵') # dic['name_list'][-2]=dic['name_list'][-2].upper() # dic['老男孩']['name']='oldboy' # dic['老男孩']['sex']=dic['老男孩']['sex'].capitalize() # print(dic)