python基础数据类型与内置方法
本篇介绍一些基础数据类型的内置方法。
I.字符串 str
str1 = 'hello world!'
1.索引取值
str1[4] #>>> o #从左往右取,从0开始
str1[-3] #>>> l #从右往左取,从-1开始
2.切片[顾头不顾尾]
str1[0:7] #>>> 'hello w' #取出索引0~6的所有字符
str1[0:9:2] #>>> 'hlowr' #第三个参数代表步长,默认为1
str1[0:5:-1] #>>> 'olleh' #反向切片
3.长度
len(str1) #>>> 12 #统计字符串字符个数,空格也算一个字符
4.成员运算
'hello' in str1 #>>> True #判断'hello'是否在字符串str1中
'java' not in str1 #>>> True #判断'java'是否不在字符串str1中
以下需要掌握
5.strip(移除字符串首尾字符)
str2 = ' hello world! '
str2.strip() #>>> hello wolrd! #默认去除空白符(空格、/n、/t)
str3 = '==wushuang=='
str3.strip('=') #>>> wushuang #移除首尾指定字符
str3.lstrip('=') #>>> wushuang== #只移除左边的指定字符
str3.rstrip('=') #>>> ==wushuang #只移除右边的指定字符
6.split(切分)
str4 = 'hello world'
str4.split() #>>> ['hello','world'] #默认以空格为分隔符
str4.rsplit() #>>> ['world','hello'] #从右往左切分
str5 = '127.0.0.1'
str5.split('.') #>>> ['127','0','0','1']
str5.split('.',2) #>>> ['127','0','0.1'] #第二个参数为切分次数
7.join(合并)
'~'.join('hello') #>>> 'h~e~l~l~o' #合并字符并插入指定字符
','.join(['hello','world']) #>>> 'hello,world' #将列表内元素合并成字符串
8.lower与upper
str6 = 'hello WORLD'
str6.upper() #>>> HELLO WORLD #英文字符全大写
str6.lower() #>>> hello world #英文字符全小写
9.isdigit(判断字符串是否由纯数字组成)
str7 = '1234'
str8 = 'a1234'
str7.isdigit() #>>> True
str8.isdigit() #>>> False #字符串内有字母,所以为False
以下仅了解
10.find和index(查找)
msg='wushuang say hello'
msg.find('u',1,3) #>>> 1 # 在索引为1和2(顾头不顾尾)的字符中查找字符o的索引,还有个方法为 rfind
msg.index('e',2,4) #>>> ValueError: substring not found # 同find,但在找不到时会报错,还有个方法为 rindex
11.count(统计)
msg = "hello everyone"
msg.count('e') #>>> 4 # 统计字符串e出现的次数
msg.count('e',1,6) #>>> 1 # 字符串e在索引1~5范围内出现的次数
12.center,ljust,rjust,zfill(填充)
name='rose'
name.center(30,'-') #>>> '-------------rose-------------' # 总宽度为30,字符串居中显示,不够用 - 填充
name.ljust(30,'*') #>>> 'rose**************************' # 总宽度为30,字符串左对齐显示,不够用 * 填充
name.rjust(30,'*') #>>> '**************************rose' # 总宽度为30,字符串右对齐显示,不够用 * 填充
name.zfill(50) #>>> '0000000000000000000000000000000000000000000000rose' # 总宽度为50,字符串右对齐显示,不够用 0 填充
13.expandtabs
name = 'chiyan\thello' # \t 表示制表符(tab键)
name #>>> 'chiyan hello'
name.expandtabs(1) #>>> 'chiyan hello' # 参数用于修改\t制表符代表的空格数
14.captalize,swapcase,title
msg = 'hello everyone nice to meet you!'
msg.capitalize() #>>> 'Hello everyone nice to meet you!' # 首字母大写
msg = 'Hi girl, I want make friends with you!'
msg.swapcase() #>>> 'hI GIRL, i WANT MAKE FRIENDS WITH YOU!' #大小写翻转
msg = 'dear my friend i miss you very much'
msg.title() #>>> 'Dear My Friend I Miss You Very Much' # 每个单词的首字母大写
15.is
#在python3中
num1 = b'4' # bytes
num2 = u'4' # unicode,python3中无需加u就是unicode
num3 = '四' # 中文数字
num4 = 'Ⅳ' # 罗马数字
#isdigt:bytes,unicode
num1.isdigit() #>>> True # bytes算数字
num2.isdigit() #>>> True # utf算数字
num3.isdigit() #>>> False #中文数字不算数字
num4.isdigit() #>>> False #罗马数字不算数字
#isdecimal:uncicode(bytes类型无isdecimal方法)
num2.isdecimal() #>>> True # utf算数字
num3.isdecimal() #>>> False #中文数字不算数字
num4.isdecimal() #>>> False #罗马数字不算数字
#isnumberic:unicode,中文数字,罗马数字(bytes类型无isnumberic方法)
num2.isnumberic() # True # utf算数字
num3.isnumberic() # True #中文数字算数字
num4.isnumberic() # True #罗马数字算数字
总结:
最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景如果要判断中文数字或罗马数字,则需要用到isnumeric。
II.列表 list
l1 = ['wushuang','chiyan','kecai','rose']
1.取值
l1[0] #>>> 'wushuang' #正向取值,索引从0开始
l1[-1] #>>> 'rose' #反向取值,索引从-1开始
2.修改
l1[1] = 'cake fly' #将列表内索引为1的元素修改为'cake fly'
l1 #>>> ['wushuang','cake fly','kecai','rose']
l1[4] = 'chiyan' #>>> IndexError #不能用这个方法来给列表添加元素
3.成员运算
'wushuang' in l1 #>>> True #判断'wushuang'是否在l1中
'kecai' not in l1 #>>> False #判断'kecai'是否不在l1中
4.长度
len(l1) #>>> 4 #统计列表内元素数量
5.添加
l2 = ['a','b','c']
l2.append('d') #在列表尾部追加'd'
l2 #>>> ['a', 'b', 'c', 'd']
l2.extend(['a','b','c']) #一次性在列表尾部添加多个元素
l2 #>>> ['a', 'b', 'c', 'd', 'a', 'b', 'c']
l2.insert(0,"first") #在指定位置插入元素
l2 #>>> ['first', 'a', 'b', 'c', 'd', 'a', 'b', 'c']
6.删除
l3 = [11,22,33,44]
del l3[2] #删除索引为2的元素
l3 #>>> [11,22,44]
print(l3.pop()) #>>> 44 #默认删除列表最后一个元素,并将删除的值返回,括号内可以通过加索引值来指定删除元素
l3 #>>> [11,22]
print(l3.remove(11)) #>>> None # 括号内指名道姓表示要删除哪个元素,没有返回值
l3 #>>> [22,]
7.排序
l4 = [11,22,33,44]
l4.reverse() #颠倒列表内元素顺序
l4 #>>> [44,33,22,11]
l4 = [11,22,3,42,7,55]
l4.sort() #给列表内所有元素排序,排序时列表元素之间必须是相同数据类型,不可混搭,否则报错
l4 #>>> [3, 7, 11, 22, 42, 55]
l4.sort(reverse=True) # reverse用来指定是否跌倒排序,默认为False
l #>>> [55, 42, 22, 11, 7, 3]
以下仅了解
8.比较大小
**我们常用的数字类型直接比较大小,但其实,字符串、列表等都可以比较大小,原理相同:都是依次比较对应位置的元素的大小,如果分出大小,则无需比较下一个元素。**
l1 = [1,2,3]
l2 = [2,]
l2 > l1 #>>> True
字符之间的大小取决于它们在ASCII表中的先后顺序,越往后越大。
s1 = 'abc'
s2 = 'az'
s2 > s1 #>>>True
9.循环
for line in l1:
print(line)
#>>>'wushuang'
#>>>'cake fly'
#>>>'kecai'
#>>>'rose'
#循环遍历l1列表里面的元素
III.元组 tuple
元组与列表相似,只要将列表的中括号[]改为小括号(),元组为不可变类型。
tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33)
1.取值
tuple1[0] #>>> 1
tuple1[-2] #>>> 22
2.切片
tuple1[0:6:2] #>>> (1, 15000.0, 22)
3.长度
len(tuple1) #>>> 7
4.成员运算
'hhaha' in tuple1 #>>> True #判断'hhaha'是否在元组tuple1中
'hhaha' not in tuple1 #>>> False #判断'hhaha'是否不在元组tuple1中
5.循环
for line in tuple1:
print(line)
#>>>1
#>>>hhaha
#>>>15000.0
#>>>11
#>>>22
#>>>33
#循环遍历元组tuple1里面的元素
IV.字典 dict
dic = {'name': 'wushuang','age': 16,'hobbies': ['play game', 'basketball']}
1.取值
dic['name'] #>>> 'wushuang' #根据key取相应的值
dic['hobbies'][1] #>>> 'basketball'
2.赋值
dic['gender'] = 'male' #如果key原先不存在于字典,则会新增key:value
dic #>>> {'name': 'wushuang', 'age': 16, 'hobbies': ['play game', 'basketball'],'gender':'male'}
dic['name'] = 'chiyan' #如果key原先存在于字典,则会修改对应value的值
dic #>>> {'name': 'chiyan', 'age': 18, 'hobbies': ['play game', 'basketball'],'gender':'male'}
3.长度
len(dic) #>>> 4 #统计字典dic内key的数量
4.成员运算
'name' in dic #>>> True #判断'name'是否是字典dic的key
'age' not in dic #>>> False #判断'age'是否不是字典dic的key
5.删除
dic.pop('name') # 通过指定字典的key来删除字典的键值对
dic #>>> {'age': 18, 'hobbies': ['play game', 'basketball'],'gender':'male'}
6.键keys,值values,键值对items
dic = {'name': 'chiyan','age': 18, 'hobbies': ['play game', 'basketball'],'gender':'male'}
dic.keys()
#>>> dict_keys(['name', 'age', 'hobbies','gender'])
#获取字典所有的key
dic.values()
#>>> dict_values(['chiyan', 20, ['play game', 'basketball'],'male'])
#获取字典所有的value
dic.items()
#>>> dict_items([('name', 'chiyan'), ('age', 3.), ('hobbies', ['play game', 'basketball']),('gender','male')])
#获取字典所有的键值对
7.循环
for key in dic: #默认遍历的是字典的key
print(key)
#>>> 'name'
#>>> 'age'
#>>> 'hobbies'
#>>> 'gender'
for key in dic.keys(): #只遍历key
rint(key)
#>>> 'name'
#>>> 'age'
#>>> 'hobbies'
#>>> 'gender'
for key in dic.values(): #只遍历value
print(key)
#>>> 'chiyan'
#>>> 20
#>>> ['play game', 'basketball']
#>>> 'male'
for key in dic.items(): #遍历key与value
print(key)
#>>> ('name', 'chiyan')
#>>> ('age', 20)
#>>> ('hobbies', ['play game', 'basketball'])
#>>> ('gender','male')
以下需要掌握
8.get(字典取值建议使用get方法)
dic = {'k1':'wushuang','k2':'chiyan','k3':'kecai'}
dic.get('k1') #>>> 'wushuang' #key存在,则获取key对应的value值
dic.get('rose') #>>> None #key不存在,不会报错而是默认返回None
dic.get('xxx',666) #>>> 666 #key不存在时,可以设置默认返回的值
9.pop(删除)
dic= {'k1':'wushuang','k2':'chiyan','k3':'kecai'}
dic.pop('k2') #>>> 'chiyan' #删除指定的key对应的键值对,并返回值
dic #>>> {'k1': 'wushuang', 'k3': 'kecai'}
dic= {'k1':'wushuang','k2':'chiyan','k3':'kecai'}
item = dic.popitem() #随机删除一组键值对,并将删除的键值放到元组内返回
dic #>>> {'k2': 'chiyan', 'k3': 'kecai'}
item #>>> ('k1', 'wushuang')
10.update(更新)
dic= {'k1':'wushuang','k2':'chiyan','k3':'kecai'}
dic.update({'k2':'rose','k4':'cake fly'})
#用新字典更新旧字典,有则修改,无则添加
dic #>>> {'k1':'wushuang','k2':'rose','k3':'kecai', 'k4': 'cake fly'}
11.fromkeys
dic = dict.fromkeys(['k1','k2','k3'],'w')
#创建一个新字典,参数1为keys,参数二为初始值
dic #>>> {'k1':'w', 'k2':'w', 'k3':'w'}
12.setdefault
dic={'k1':111,'k2':222}
dic.setdefault('k3',333) #>>> 333
#key不存在则新增键值对,并将新增的value返回
dic #>>> {'k1': 111, 'k3': 333, 'k2': 222}
dic={'k1':111,'k2':222}
dic.setdefault('k1',666) #>>> 111
#key存在则不做任何修改,并返回已存在key对应的value值
dic #>>> {'k1': 111, 'k2': 222}
V.集合
friends1 = {"zero","kevin","jason","wushuang"}
friends2 = {"Jy","ricky","jason","rose"}
关系运算
1.合集(|)
friends1 | friends2
#>>> {'kevin', 'ricky', 'zero', 'jason', 'Jy', 'wushuang','rose'}
#求两个用户所有的好友(重复好友只留一个)
2.交集(&)
friends1 & friends2 #>>> {'jason'} #求两个用户的共同好友
3.差集(-)
friends1 - friends2 #>>> {'kevin', 'zero','wushuang'} #求用户1独有的好友
friends2 - friends1 #>>> {'ricky', 'Jy','rose'} 求用户2独有的好友
4.对称差集(^)
friends1 ^ friends2 #>>> {'kevin', 'zero', 'ricky', 'Jy','wushuang','rose'}
5.值是否相等(==)
friends1 == friends2 #>> False
6.父集(一个集合是否包含另外一个集合)
{1,2,3} > {1,2} #>>> True #包含则返回True
{1,2,3} >= {1,2} #>>> True
{1,2,3} > {1,3,4,5} #>>> False #不存在包含关系,则返回False
{1,2,3} >= {1,3,4,5} #>>> False
7.子集
{1,2} < {1,2,3} #>>> True
{1,2} <= {1,2,3} #>>> True
8.去重
只能针对不可变类型,集合本身是无序的,去重之后无法保留原来的顺序。
l=['a','b',1,'a','a']
s=set(l)
s #>>> {'b', 'a', 1} #将列表转成了集合
l_new=list(s)
l_new #>>> ['b', 'a', 1] #去除了重复,但是打乱了顺序
针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
{'name':'wushuang','age':16,'sex':'male'},
{'name':'chiyan','age':20,'sex':'male'},
{'name':'rose','age':21,'sex':'female'},
{'name':'chiyan','age':16,'sex':'male'},
{'name':'wushuang','age':20,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)
#>>> [
# {'age': 16, 'sex': 'male', 'name': 'wushuang'},
# {'age': 20, 'sex': 'male', 'name': 'chiyan'},
# {'age': 21, 'sex': 'female', 'name': 'rose'}
# ]
结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重。
9.长度
s={'a','b','c'}
len(s) #>>> 3 #统计集合内元素个数
10.成员运算
'c' in s #>>> True #判断值'c'是否在集合s内
'd' not in s #>>> False #判断值'd'是否不在集合s内
11.循环
for item in s:
print(item)
#>>> c
#>>> a
#>>> b
#集合内是没有顺序之分的,所以循环时会随机取出
-结束-
本篇是由本萌新学习总结而来,如有错漏请手下留情。