python基础数据类型二
数据类型:数字、字符串、列表、元组、字典、集合
一、数字int
数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:
bit_length()将十进制转化为二进制占的位数 二进制 十进制 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 ''' i=3 j=4 print(i.bit_length())#>>>2 print(j.bit_length())#>>>3
二、布尔值bool
布尔值就两种:True,False。就是反应条件的正确与否。
2 数字与字符串转化 3 int ---> str : str(int) 4 str ---> int : int(str) str必须全部是数字组成 5 布尔型与数字、字符串转化 6 int ---> bool:0 ---> False 非0 ---> True 7 bool---> int :int(True)---> 1 int(False)---> 0 8 str ---> bool:空字符串 ---> False 非空字符串---> True 10 print(int(True))#>>>1 11 print(int(False))#>>>0 12 print(bool(''))#>>>False 13 print(bool('a'))#>>>True
三、字符串str
字符串的索引与切片。
1、索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。
1 s='Hello World!' 2 s1=s[0]#第一个元素 3 s2=s[-1]#最后一个元素 4 s3=s[-2]#倒数第二个元素 5 print(s1)#>>>H 6 print(s2)#>>>! 7 print(s3)#>>>d
2、切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾首不顾尾)。
s1=s[起始索引:结束索引:步长]
1 s='Hello World!' 2 s1=s[0:3]#从字符串的第1个字符到第3个字符进行切片 3 s2=s[:3]#0可以省略 4 s3=s[3:9]#从字符串的第4个字符到第9个字符进行切片 5 s4=s[:5:2]#从字符串的第1个字符到第5个字符进行切片,加步长2 6 s5=s[:]#把字符串全部取出来 7 s6=s[-1:-4:-1]#反向取字符串,加反向步长 8 print(s1)#>>>Hel 9 print(s2)#>>>Hel 10 print(s3)#>>>lo Wor 11 print(s4)#>>>Hlo 12 print(s5)#>>>Hello World! 13 print(s6)#>>>!dl
3、字符串常用方法
1)* captalize() 首字母大写
1 s='Hello World!' 2 s1=s.capitalize() 3 print(s1)#>>>Hello world!
2)***upper() 字母全部大写 lower() 字母全部小写
1 s='Hello World!' 2 s2=s.upper() 3 s3=s.lower() 4 print(s2)#>>>HELLO WORLD! 5 print(s3)#>>>hello world!
1 #例 验证码不区分大小写 2 code = 'QcaR'.upper() 3 your_code =input('请输入验证码:').upper() 4 if your_code == code : 5 print('验证成功')
3)swapcase() 大小写翻转
1 s='Hello World!' 2 s1=s.swapcase() 3 print(s1)#>>>hELLO wORLD!
4)title() 非字母的元素隔开的每个单词首字母大写
1 msg='hello world_hello*world' 2 print(msg.title())#>>>Hello World_Hello*World
5)center() 内容居中,总长度自己设定,默认填充None
1 s='Hello World!' 2 s1=s.center(20,"*") 3 s2=s.center(20,) 4 print(s1)#>>>****Hello World!**** 5 print(s2)#>>> Hello World!
6)*** strartwith() 判断以什么为开头 *** endswith() 判断以什么为结尾
1 s='Hello World!' 2 s1=s.startswith('H') 3 print(s1)#>>>True 4 s2=s.startswith('He') 5 print(s2)#>>>True 6 s3=s.startswith('e',1,5)#切片截取的字符串是否以‘e’为开头 7 print(s3)#>>>True 8 s4=s.endswith('!') 9 print(s4)#>>>True
7)strip() 去除首尾的空格,制表符\t,换行符\n。不仅仅是去除空格
注:lstrip() 只除字符串左边的;rstrip() 只除字符串右边的;
1 s=' Hello World! ' 2 ss='\tHello World!\n' 3 s1=s.strip() 4 print(s1)#>>>Hello World! 5 s2=ss.strip() 6 print(s2)#>>>Hello World! 7 sss='tHello World!te' 8 s3=sss.strip('t')#去掉字符串首尾的‘t’ 9 print(s3)#>>>Hello World!te 10 s4=sss.strip('tey')#迭代去除首尾的‘t’、‘e’、‘y’,无序 11 print(s4)#>>>Hello World!
1 # 例 去除用户输入的空格 2 name = input('>>>').strip() 3 if name == 'oldboy': 4 print('验证成功')
8)#split() 字符串 转化 列表
1 s='Hello World!' 2 s1=s.split() 3 print(s1)#>>>['Hello', 'World!'] 4 ss='He,llo Wo,rld!' 5 s2=ss.split(',') 6 print(s2)#>>>['He', 'llo Wo', 'rld!'] 7 sss='oHello World!' 8 s3=sss.split('o') 9 print(s3)#>>>['', 'Hell', ' W', 'rld!'] 10 s4=sss.split('o',1)#通过o切割字符串,且只切第一个o 11 print(s4)#>>>['', 'Hello World!']
9)join() 将列表 转化 字符串
注:如果列表里是非字符串元素,会报错
s='Hello World!' s1='+'.join(s) print(s1)#>>>H+e+l+l+o+ +W+o+r+l+d+! s2='_'.join(s) print(s2)#>>>H_e_l_l_o_ _W_o_r_l_d_! ss=['Hello','World','!'] s3='_'.join(ss) print(s3)#>>>Hello_World_!
10)replace() 把字符串的旧字符串替换成新的字符串,如果指定第三个参数max,则替换不超过max次。
语法:str.replace(old,new[,max])
1 s='Hello World!' 2 s1=s.replace('W','w') 3 print(s1)#>>>Hello world!
11)find() 通过元素找索引 index() 通过元素找索引 找不到元素会报错
1 s='Hello World!' 2 s1=s.find("e",1,6) 3 print(s1)#>>>1 4 s2=s.find("m",1,6) 5 print(s2)#>>>-1 6 s2=s.index("o",1,6) 7 print(s2)#>>>4
12)format() 格式化输出
1 s1='我叫{},今年{}岁,爱好{}'.format('Lucy','18','羽毛球') 2 print(s1)#>>>我叫Lucy,今年18岁,爱好羽毛球 3 s2='我叫{0},今年{1}岁,爱好{2}'.format('Lucy','18','羽毛球')#可以按照索引进行替换 4 print(s2)#>>>我叫Lucy,今年18岁,爱好羽毛球
13)is系列
1 s='a123' 2 print(s.isdigit())#字符串由数字组成 3 print(s.isalpha())#字符串由字母组成 4 print(s.isalnum())#字符串由字母或数字组成
14)公共方法 :len() 返回对象的长度或项目个数; count() 数字字符串的元素出现的个数
1 s='hello world' 2 s1=len(s) 3 print(s1)#>>>11 4 s2=s.count("l",0,10) 5 print(s2)#>>>3
四、元祖tupe
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
五、列表list
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
1、增
1 #append() 在最后追加元素,无返回值 2 l1=[111,'aaa',222,'bbb'] 3 l1.append('123abc') 4 print(l1)#>>>[111, 'aaa', 222, 'bbb', '123abc'] 5 #insert() 插入 6 l2=[111,'aaa',222,'bbb'] 7 l2.insert(1,'ccc') 8 print(l2)#>>>[111, 'ccc', 'aaa', 222, 'bbb'] 9 #extend 迭代着增加 10 l3=[111,'aaa',222,'bbb'] 11 l3.extend('ddd') 12 print(l3)#>>>[111, 'aaa', 222, 'bbb', 'd', 'd', 'd'] 13 l4=[111,'aaa',222,'bbb'] 14 l4.extend(['333','444']) 15 print(l4)#>>>[111, 'aaa', 222, 'bbb', '333', '444']
2、删
1 #pop 按照索引删除,有返回值,增删改查中唯一一个有返回值的 2 l1=[111,'aaa',222,'bbb'] 3 print(l1.pop(0))#>>>111 4 print(l1)#>>>['aaa', 222, 'bbb'] 5 #remove 6 l1=[111,'aaa',222,'bbb'] 7 l1.remove('aaa') 8 print(l1)#>>>[111, 222, 'bbb'] 9 #clear 清空列表,删除内容,但是在内存中还占用空间 10 l1=[111,'aaa',222,'bbb'] 11 l1.clear() 12 print(l1)#>>>[] 13 #del 内存级别删除列表 14 l1=[111,'aaa',222,'bbb'] 15 del l1 16 print(l1)#报错,内存中删除列表 17 #del 按照元素删除 18 l1=[111,'aaa',222,'bbb'] 19 del l1[1] 20 print(l1)#>>>[111, 222, 'bbb'] 21 #del 切片删除 22 l1=[111,'aaa',222,'bbb'] 23 del l1[:3] 24 print(l1)#>>>['bbb']
3、改
1 #按照索引去改 2 l1=[111,'aaa',222,'bbb'] 3 l1[2]='ccc' 4 print(l1)#>>>[111, 'aaa', 'ccc', 'bbb'] 5 #按切片去改 1.按切片的元素删除;2.按照添加的组成最小元素添加 6 l1=[111,'aaa',222,'bbb'] 7 l1[:2]='abc' 8 print(l1)#>>>['a', 'b', 'c', 222, 'bbb']
4、查
1 li=[111,'aaa',222,'bbb'] 2 #按照索引去查 3 print(li[1])#>>>aaa 4 print(li[-1])#>>>bbb 5 #按照切片查询 6 print(li[:2])#>>>[111, 'aaa'] 7 print(li[:3:2])#>>>[111, 222] 8 #循环for 9 for i in li: 10 print(i)
5、其他方法
1 #count 计数 2 l1=[111,'aaa',222,'bbb','aaa'] 3 print(l1.count('aaa'))#>>>2 4 #len 返回对象的长度 5 print(len(l1))#>>>5 6 #通过元素找索引 列表中只有index 7 print(l1.index('aaa'))#>>>1 8 #排序 9 # sort() 从小到大或从大到小排序 10 l1=[3,6,4,7,6,9,1,2,5,0] 11 l1.sort()#从小到大排序 12 print(l1)#>>>[0, 1, 2, 3, 4, 5, 6, 6, 7, 9] 13 l1.sort(reverse=True)#从大到小排序 14 print(l1)#>>>[9, 7, 6, 6, 5, 4, 3, 2, 1, 0] 15 #reverse 反向排序 16 l1=[3,6,4,7,6,9,1,2,5,0] 17 l1.reverse() 18 print(l1)#>>>[0, 5, 2, 1, 9, 6, 7, 4, 6, 3]
6、列表的嵌套
1 l1=[111,'aaa',222,'bbb',['ccc','ddd',10]] 2 # 1.将aaa全部变成大写 3 # 方法一 4 l1[1]='AAA' 5 print(l1)#>>>[111, 'AAA', 222, 'bbb', ['ccc', 'ddd',10]] 6 # 方法二 7 l1[1]=l1[1].upper() 8 print(l1)#>>>[111, 'AAA', 222, 'bbb', ['ccc', 'ddd',10]] 9 # 2.给['ccc','ddd']追加'eee' 10 l1[-1].append('eee') 11 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd',10, 'eee']] 12 # 3.将'ccc'首字母大写 13 l1[-1][0]=l1[-1][0].capitalize() 14 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['Ccc', 'ddd',10]] 15 # 4.将10通过数字相加,或者字符串相加等等,变成‘100’ 16 # 方法一 17 l1[-1][-1]=str(l1[-1][-1]+90) 18 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd', '100']] 19 # 方法二 20 l1[-1][-1]=str(l1[-1][-1])+'0' 21 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd', '100']]
六、字典dict
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
1、增
# dic['li'] = ["a","b","c"] # print(dic) # setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。 # dic.setdefault('k','v') # print(dic) # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} # dic.setdefault('k','v1') # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} # print(dic)
2、删
# dic_pop = dic.pop("a",'无key默认返回值') # pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值 # print(dic_pop) # del dic["name"] # 没有返回值。 # print(dic) # dic_pop1 = dic.popitem() # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回 # print(dic_pop1) # ('name','jin') # dic_clear = dic.clear() # 清空字典 # print(dic,dic_clear) # {} None
3、改
# dic = {"name":"jin","age":18,"sex":"male"} # dic2 = {"name":"alex","weight":75} # dic2.update(dic) # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中 # print(dic2
4、查
# value1 = dic["name"] # 没有会报错 # print(value1) # value2 = dic.get("djffdsafg","默认返回值") # 没有可以返回设定的返回值 # print(value2)
5、其他操作
# item = dic.items() # print(item,type(item)) # dict_items([('name', 'jin'), ('sex', 'male'), ('age', 18)]) <class 'dict_items'> # 这个类型就是dict_items类型,可迭代的 # keys = dic.keys() # print(keys,type(keys)) # dict_keys(['sex', 'age', 'name']) <class 'dict_keys'> # values = dic.values() # print(values,type(values)) # dict_values(['male', 18, 'jin']) <class 'dict_values'> 同上
6、字典循环
# dic = {"name":"jin","age":18,"sex":"male"} # for key in dic: # print(key) # for item in dic.items(): # print(item) # for key,value in dic.items(): # print(key,value)
七、其他(for,enumerate,range)
1、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)
2、enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
li = ['alex','银角','女神','egon','太白'] for i in enumerate(li): print(i) for index,name in enumerate(li,1): print(index,name) for index, name in enumerate(li, 100): # 起始位置默认是0,可更改 print(index, name)
3、range:指定范围,生成指定数字
for i in range(1,10): print(i) for i in range(1,10,2): # 步长 print(i) for i in range(10,1,-2): # 反向步长 print(i)