数据类型与内置方法
数据类型
- 数字
- 字符串
- 列表
- 字典
- 元组
- 集合
字符串
1.用途
用来描述某个物体的特征:姓名,性别,爱好等
2.定义方式
变量名 = '字符串'
如:name = 'huazai'
3.常用操作和内置方法
1.按索引取值:(只能取值,不能改变值)通过字符串的索引值可以取到对应位置的字符>>> name = 'huazai'>>> name[1]'u'>>> name[-1]'i'2.切片通过索引值的范围进行取值>>> name = 'huazai'>>> name[0:3] #按范围取值,默认步长为1,正向'hua'>>> name[-1:-4:-1] #逆向取值'iaz'>>> name[0:5:2] #按步长取值'haa'3.长度函数len()计算长度>>> name = 'huazai' #实质是调用name.__len__()>>> len(name)6
4.成员运算in 和not in>>> name = 'huazai'>>> 'a' in nameTrue>>> 'f' not in nameTrue>>> 'f' in nameFalse
5.移除空白strip、lstrip、rstrip默认移除字符串开头和结尾处的空白>>> str1 = ' hua zai '>>> print(str1.strip())hua zai#字符串中间的空白并不会移除,常用在与让用户输入内容时,对其进行处理。括号内可以指定移除的字符串>>> str1 = '***hua zai****'>>> print(str1.strip('*'))hua zai>>> print(str1.lstrip('*'))hua zai****>>> print(str1.rstrip('*'))***hua zai
6.切分splist将字符串按某种定义的符号进行拆分成列表>>> str1 = 'root:x:0:0::/root:/bin/bash'>>> print(str1.split(':'))['root', 'x', '0', '0', '', '/root', '/bin/bash']>>> print(str1.rsplit(':',1)) #从右开始切分,只切分一次['root:x:0:0::/root', '/bin/bash']
7.lower,upper将字母变成大小写>>> str1 = 'huazai'>>> print(str1.upper())HUAZAI>>> str2 = 'HuaZai'>>> print(str2.lower())huazai
8.startswith,endswith判断字符串以什么开头、什么结尾>>> str1 = 'huazai123'>>> print(str1.startswith('hua'))True>>> print(str1.startswith('123'))False>>> print(str1.endswith('123'))True
9.format的三种玩法常用在输出的时候,不需要根据占位符的位置顺序指定变量的顺序,方便,也是常用的方法。>>> print('my name is {name},i am {age} old'.format(age=18,name='huazai'))my name is huazai,i am 18 old
10.join将字符串已某种符号隔开,可迭代的对象必须为字符串>>> print('*'.join(['my','name','is','huazai']))my*name*is*huazai11.replace将字符串1替换成字符串2,>>> str1 = 'huazai'>>> str2 = 'zai123'>>> print(str1.replace('zai',str2))huazai123>>> print(str1) #源字符串并不会被改变,因为字符串是不可变对象huazai可以指定替换次数>>> str1 = 'huazaizaizaizai'>>> str2 = 'zai123'>>> print(str1.replace('zai',str2,2))huazai123zai123zaizai
12.isdigit判断一个字符串是否是数字>>> a = 'huazai'>>> print(a.isdigit())False
其他操作(了解部分):13.find,rfind,index,rindex,count
find>>> str1 = 'huazai'>>> print(str1.find('a',1,5))2>>> print(str1.find('l',1,5)) #不存在返回-1-1
index>>> print(str1.index('a'))2>>> print(str1.index('l')) #不存在会报错Traceback (most recent call last):File "<stdin>", line 1, in <module>ValueError: substring not found
count>>> print(str1.count('a'))2
14.center,ljust,rjust,zfill>>> str1 = 'huazai'>>> print(str1.center(50,'*'))**********************huazai**********************>>> print(str1.ljust(50,'*'))huazai********************************************>>> print(str1.rjust(50,'*'))********************************************huazai>>> print(str1.rjust(50))huazai>>> print(str1.zfill(50))00000000000000000000000000000000000000000000huazai
15.expandtabs将tab键转换成几个空格>>> str1 = 'hua\tzai' >>> print(str1)hua zai>>> print(str1.expandtabs())hua zai>>> print(str1.expandtabs(1))hua zai
16.captalize,swapcase,title>>> str1 = 'huA Zai'>>> print(str1.capitalize())Hua zai>>> print(str1.swapcase())HUa zAI>>> print(str1.title())Hua Zai
17.is数字系列#在python3中num1=b'4' #bytesnum2=u'4' #unicode,python3中无需加u就是unicodenum3='四' #中文数字num4='Ⅳ' #罗马数字#isdigt:bytes,unicodeprint(num1.isdigit()) #Trueprint(num2.isdigit()) #Trueprint(num3.isdigit()) #Falseprint(num4.isdigit()) #False#isdecimal:uncicode#bytes类型无isdecimal方法print(num2.isdecimal()) #Trueprint(num3.isdecimal()) #Falseprint(num4.isdecimal()) #False#isnumberic:unicode,中文数字,罗马数字#bytes类型无isnumberic方法print(num2.isnumeric()) #Trueprint(num3.isnumeric()) #Trueprint(num4.isnumeric()) #True
18.is其他print('===>')name='huazai'print(name.isalnum()) #字符串由字母或数字组成print(name.isalpha()) #字符串只由字母组成print(name.isidentifier())print(name.islower())print(name.isupper())print(name.isspace())print(name.istitle())
列表
1.用途
用来描述同一属性可以有多种,如:爱好,课程等
2.定义方式
habbies=['basketball','read','movie','music']
或者
L= list('basketball','read','movie','music')
3.常用操作和内置方法
1.必会操作按索引存取值>>> habbies=['basketball','read','movie','music']>>> habbies[0]'basketball'>>> habbies[-1]'music'>>> habbies[2]='girls'>>> habbies['basketball', 'read', 'girls', 'music']切片(与字符串类似)>>> habbies=['basketball','read','movie','music']>>> habbies[0:3]['basketball', 'read', 'movie']>>> habbies[0:4:2]['basketball', 'movie']>>> habbies[-1:0:-1]['music', 'movie', 'read']长度len>>> habbies=['basketball','read','movie','music']>>> len(habbies)4成员运算in、not in>>> habbies=['basketball','read','movie','music']>>> habbies=['basketball','read','movie','music']>>> 'read' in habbiesTrue>>> 'girl' not in habbiesTrue追加append>>> habbies=['basketball','read','movie','music']>>> habbies.append('girls')>>> habbies['basketball', 'read', 'movie', 'music', 'girls']删除del、remove>>> habbies['basketball', 'read', 'movie', 'music', 'girls']>>> habbies.pop()'girls'>>> habbies>>>['basketball', 'read', 'movie', 'music']>>>habbies=['basketball','read','movie','music']>>>habbies.remove('movie')>>>print(habbies)>>>['basketball', 'read', 'music']循环:habbies=['basketball','read','movie','music']1. for item in habbies:print(item)2.i=0while i <len(habbies):print(habbies[i])i+=1
熟悉内置方法:
# pop:从尾部删除元素
habbies.pop()
habbies.pop()# extend:增加元素
habbies.extend('girls')# index:获取元素的索引值
print(habbies.index('basketball'))
# count:统计元素
print(habbies.count('read'))
# clear:清空列表
habbies.clear()
# copy:复制一份列表
L = habbies.copy()
print(L)
# insert:指定位置插入元素
habbies.insert(1,'girls')
# reverse:反转列表所有元素的顺序
habbies.reverse()
# sort:元素排序
print(habbies.sort())
字典
1.作用
将多个值以key-value的形式保存,取值速度快
2.定义
其中key是不可变类型(数字,字符串,元组),value可以是任意类型
user_info = {'name':'huazai','sex':'male','age':'18'}
或者
user_info = dict(name='huazai',sex='male',age=18)
或者
{}.fromkeys(('name','sex','age'),None)
3. 常用操作
#常用操作
#存取值,按key存取
user_info = {'name':'huazai','sex':'male','age':'18'}
print(user_info['name'])
user_info['habbies']='girls'
print(user_info)#长度
print(len(user_info))
print(user_info.__len__())#成员运算in、not inprint('name' in user_info)
print('habbies' not in user_info)# 删除
del user_info['name']
user_info.pop('name')# 键值对操作 keys() value() 键值对items
print(user_info.keys())
print(user_info.values())
print(user_info.items())# 循环
for key in user_info:print(key,user_info[key])# 了解方法
# fromkey
print(user_info.fromkeys('name'))# clear 清空字典
user_info.clear()#setdefault 如果key存在不会被覆盖,见练习二
user_info.setdefault()# update 更新
d = {'name':'egon'}
user_info.update(d)
print(user_info)# get 不存在返回None
print(user_info.get('habbies'))# copy
L = user_info.copy()
print(L)
4.练习
#练习
#1 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中#即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
L = [11,22,33,44,55,66,77,88,99,90]
d ={'k1':[],'k2':[]}
for i in L:if i > 66:d['k1'].append(i)else:d['k2'].append(i)
print(d)'''
2 统计s='hello alex alex say hello sb sb'中每个单词的个数结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
'''
s = 'hello alex alex say hello sb sb'
L = s.split(" ")
print(L)
d = {}
for key in L:count = L.count(key)d.setdefault(key,count)
print(d)
元组
1. 作用:
# 存储多个不可变的值,主要用来只读的数据
2. 定义
# t = (1,2,3,4,5)
# t = tuple(1,2,3,4,5)
3. 常用操作和内置方法
# 掌握
# 按索引取值,同列表一样,但是只能取值
t = (1,2,3,'huazai')
print(t[2])
print(t[-1])# 切片,也同列表操作
print(t[1:3])
print(t[-1:0:-1])#长度
print(len(t))
print(t.__len__())#成员运算 in、not in
print('huazai' in t)#循环
for i in t:print(i)# 内置方法
# index 元素索引位置
print(t.index(1))# count 元素统计
print(t.count('huazai'))
集合
1. 作用
去重,关系运算,
2. 定义
集合:可以包含多个元素,用逗号分割,
集合的元素遵循三个原则:
1:每个元素必须是不可变类型(可hash,可作为字典的key)
2: 没有重复的元素
3:无序
s1 = {1,2,2,3,4,5,6}
s2 = {4,5,6,7,8,9}
3.常用操作和内置方法
#1、长度len
# print(len(s1))
#2、成员运算in和not in
# print(2 in s1)
#3、|合集
print(s1 | s2)
#4、&交集
print(s1 & s2)
#5、-差集
print(s1 - s2)
#6、^对称差集
print(s1 ^ s2)
#7、==
print(s1 == s2)
#8、父集:>,>=
print(s1 > s2)
#9、子集:<,<=
print(s1 < s2)
4. 练习
'''一.关系运算有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}linuxs={'wupeiqi','oldboy','gangdan'}1. 求出即报名python又报名linux课程的学员名字集合2. 求出所有报名的学生名字集合3. 求出只报名python课程的学员名字4. 求出没有同时这两门课程的学员名字集合
'''
# pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
# linuxs={'wupeiqi','oldboy','gangdan'}
# print(pythons & linuxs)
# print(pythons | linuxs)
# print(pythons - linuxs)
# print(pythons ^ linuxs)
'''
二.去重1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序2.在上题的基础上,保存列表原来的顺序3.去除文件中重复的行,肯定要保持文件内容的顺序不变4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序l=[{'name':'egon','age':18,'sex':'male'},{'name':'alex','age':73,'sex':'male'},{'name':'egon','age':20,'sex':'female'},{'name':'egon','age':18,'sex':'male'},{'name':'egon','age':18,'sex':'male'},
] '''l = ['a','b',1,'a','a']
print(set(l))
L= []
for i in l:if i not in L:L.append(i)
print(L)
转载于:https://blog.51cto.com/ronghuachen/2050442