Python基础数据类型与内置方法

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    
    #集合内是没有顺序之分的,所以循环时会随机取出

-结束-

本篇是由本萌新学习总结而来,如有错漏请手下留情。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值