Python的数据类型和常用方法大全

时间:2021-08-25 15:34:26

数据类型

一.数字

整形int

x=10 #x=int(10)
print(id(x),type(x),x)

浮点型float

salary=3.1 #salary=float(3.1)
print(id(salary),type(salary),salary)

二.字符串

name='hantao'
#按索引取值(正向取+反向取) :只能取
print(name[0],type(name[0]))
print((name[-1]))
# 切片(顾头不顾尾,步长)
print(name[1:3])
print(name[0:5:2])
print(name[5::-1])
# 长度len
print(len(name))
# 成员运算in和not in
msg='hellochantao'
print('hantao'in msg)
# 移除空白strip
passwd='  hantao123    '
print(passwd.strip())
passwd1='****hantao***'
print(passwd1.strip('*'))
print(passwd.lstrip())
print(passwd.rstrip())
# 切分split
user='hantao:liangchaowei:liudehua'
print(user.split(':'))
user.split('',1) #选定切分的数量
user.rsplit('',1) #从右侧切分
#判断开头结尾
msg='hantao_is_cool'
print(msg.startswith('han'))
print(msg.endswith('cool'))
#用replace替换
msg='hantao say i have a tesla,my name is hantao'
print(msg.replace('hantao','sb',1))       #替换,后面数字是替换数量
#format格式化
print('my name is %s,my age is %s'%('hantao',18))
print('my name is {},my age is {}'.format('hantao',18))
print('my name is {0},my age is {1}'.format('hantao',18))
print('my name is {a},my age is {b}'.format(a='hantao',b=18))
#查找
msg='hello world'
print(msg.find('hel'))
print(msg.index('o'))
print(msg.count('l',0,4))
#join连接
print(':'.join(['hantao', 'liangchaowei', 'liudehua']))   #必须是字符串放在一个列表中传入join
#填充
print('info'.center(30,'='))
print('info'.rjust(30,'='))
print('info'.ljust(30,'='))
print('info'.zfill(30))
#is数字系列
#在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字

#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False

#isdecimal:uncicode
#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False

#isnumberic:unicode,中文数字,罗马数字
#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True

#三者不能判断浮点数
num5='4.3'
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())
'''
总结:
    最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
    如果要判断中文数字或罗马数字,则需要用到isnumeric
'''
#find,rfind,index,rindex,count
name='hantao say hello'
print(name.find('h',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
# print(name.index('h',2,4)) #同上,但是找不到会报错
print(name.count('h',1,3)) #顾头不顾尾,如果不指定范围则查找所有
#center,ljust,rjust,zfill
name='hantao'
print(name.center(30,'-'))
print(name.ljust(30,'*'))
print(name.rjust(30,'*'))
print(name.zfill(50)) #用0填充
#expandtabs  方法把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。
name='egon\thello'
print(name)
print(name.expandtabs(1))
#captalize,swapcase,title
print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
print(msg.title()) #每个单词的首字母大写
#is其他
print('===>')
name='hantao123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成

print(name.isidentifier())
print(name.islower())
print(name.isupper())
print(name.isspace())
print(name.istitle())

四.列表

# 按索引存取值(正向存取+反向存取):即可存也可以取
print(my_familly[2])
print(my_familly[-1])
# 切片(顾头不顾尾,步长)
print(my_familly[0:3])
print(my_familly[0:5:2])
print(my_familly[5::-1])
# 长度
print(len(my_familly))
# 成员运算in和not in
print('nep'in my_familly)
# 追加
my_familly.append('Corgi')
print(my_familly)
# 删除
goods=['apple','banana','pear']
del goods[-1]
print(goods.remove('apple'))   #不返回删除值
print(goods.pop(1))  #按照索引删,默认末尾开始删,返回删除值
print(goods)
#其他
goods=['apple','banana','pear','banana']
# goods.insert(0,'sb')      #具体插入的位置
# goods.extend(['meat','eggs']) 
# print(goods.count('banana'))
# goods.reverse()    #反转
# l=[2,4,6,1,-3]
# l.sort(reverse=True)
# print(l)
print(goods)

五.元祖

ages=(23,34,23,12)
# 按索引取值(正向取+反向取):只能取
print(ages[1])
# 切片(顾头不顾尾,步长)
print(ages[0:2])
# 长度
print(len(ages))
# 成员运算in和not in
print(23 in ages)
ages=(23,34,23,12)
print(ages.index(12))  #查找索引
print(ages.count(23))  #查找个数

 小练习

'''
简单购物车,要求如下:
实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入
'''
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
l = []
while True:
    for key in msg_dic:
        print(key,msg_dic[key])
    goods=input('input your good:').strip()
    if goods not in msg_dic:continue
    while True:
        counts=input('input the number:').strip()
        if counts.isdigit():break

    l.append((goods,msg_dic[goods],counts))
    print(l)

六.词典

info={'name':'egon','age':18,'sex':'male'}
# 按key存取值:可存可取
print(info['name'])
info['hobbies']=['eat','drink','sleep']
print(info)
# 长度len
print(len(info))
# 删除
print(info.pop('na1me',None))
# 键keys(),值values(),键值对items()
print(info.keys())
print(info.values())
print(info.items())
for item in info.items():
    print(item)
info={'name':'egon','age':18,'sex':'male'}
print(info.get('name'))  #取出value
print(info.get('na1me'))   #返回None
print(info.popitem())   #随机删
t=['23','23','45','45']
a,*_,d=t   #压缩赋值
print(a,d)
for a,b in info.items():
    print(a,b)
info_new={'a':1,'b':3,'name':'hantao'}
info.update(info_new)    #没有则新加,有则更新
print(info)
dic={}.fromkeys(['name','age','hobbies'])  #初始字典
print(dic)
print(info.setdefault('age','20'))    #有则不改(且返回有的值),无则增
#字典推导式
d = {'A' : 1, 'B' : 2, 'C' : 3}
d_new={v:k for k,v in d.items()}

 

 

七.集合

'''
1:每个元素必须是不可变类型(可hash,可作为字典的key)
2: 没有重复的元素
3:无序
'''

 

#作用:去重,关系运算
s={1,2,'a'}  #s=set({1,2,'a'})
s1={1,2,3}
s2={2,3,4}
# | 并集
s1|s2
s1.union(s2)
# & 交集
s1&s2
s1.intersection(s2)
s1.intersection_update(s2)
# - 差集 s1-s2 s1.difference(s2)
s1.sifference_update(s2)
# ^ 对称差集 s1^s2 s1.symmetric_difference(s2) #父集 s1>=s2 s1.issuperset(s2) #子集 s1<=s2 s1.issubset(s2)
s1={1,2,3,4,'a'}
# print(s1.pop())  #随机删,返回结果
# print(s1.remove(1))  #删元素,不返回值,元素不存在,报错
# s1.discard(1)   #删元素,不返回值,元素不存在,不报错
s2={5,6}
print(s1.isdisjoint(s2))    #s1和s2没有交集,则返回True
# 有如下列表,列表元素为不可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'},
]
l1=[]
for i in l:
    if i not in l1:l1.append(i)
print(l1)

 

#另一种集合的数据类型
s=forenset()