【3】python数据类型:数字、字符串、元祖、字典

计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。Python3中有五个标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)

一、数字(Numbers)

数字型以分类:int整型(Integer)、float浮点型、bool布尔型(boolean)、complex复数。
a, b, c, d = 20, 5.5, True, 4+3j
print(type(a), type(b), type(c), type(d))
执行的结果是:
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

1、整型(int)和浮点型(float)

整数类型(int),比如说存年龄、工资、成绩等等这样的数据就可以用int类型,有正整数、负整数和0,浮点型的也就是小数类型(folat)的,带小数点的。整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。

 2、布尔类型(boolean)

什么是布尔类型,布尔类型就是真和假,只有两个值True和Fasle,非真即假,除了True和False还有0和1,非0即真。
print(type(True))
print(type(False))
print(bool(0))
print(bool(1))
print(bool(2))
print(bool(3 == 3))
执行结果如下:
<class 'bool'> <class 'bool'> False True True True
 

二、元祖(tuple)

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦创建就不能修改,比如说,要存数据库的连接信息,这个连接信息在程序运行中是不能被改变的,元组的定义方式是用小括号(),元组只有两个方法,count和index。
tup1 = ('118.24.3.40',3306,'root','123456')#创建元组
tup2 = (1,)#如果元组只有一个元素,需要在后面添加一个逗号
t=()# 定义一个空的tuple
l=[]# 定义一个空的list
print(type(t))
print(type(l))# 打印一下类型,看看是不是tuple
print(tup1.count(5)) #某个元素出现的次数 
print(tup1.index('root')) #某个元素出现的下标

#元组的索引,分片,加法,乘法,和检查成员 print(tup1[0]) print(tup1[1:]) print(tup1 + tup2) print(tup2 * 2) print(4 in tup1) 执行的结果是: <class 'tuple'> <class 'list'>
0
2 118.24.3.40 (3306, 'root', '123456') ('118.24.3.40', 3306, 'root', '123456', 1) (1, 1) False

三、字典(dictionary)

字典,dict,全称是dictionary,它具有极快的查找速度;字典是一种key-value的数据类型,比如说要存每个人的信息,那么每个人的编号就是key,value就是每个人的信息,这样的话,一个字典就能存所有人的信息了。字典的定义使用{},大括号,每个值用“,”隔开,key和value使用“:”分隔。
为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢,这种就是字典的实现方式。
 
字典的特性:
字典是无序的,因为它没有下标,用key来当索引,所以是无序的
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重。

1、查

xiaojun ={
 'name':'xiaojun',
 'sex':'',
 'shengao':'185',
 'age':'18',
 'email':'sss@qq.com',
 'addr':'北京',
 'id':'1',
 }
print(xiaojun)#查询整个字典
print(xiaojun['shengao'])#输出键为‘shengao’的值
print(xiaojun.get('zhuzhi'))#.get查找,当没有该值时不会报错,会返回none
print(xiaojun.get('zhuzhi','火星'))#.get查找,可以给一个默认值,当查到的key不存在时返回默认值
print(xiaojun.keys()) #查询所有的键
print(xiaojun.values()) # 查询所有的值

2、增

stus={} 
stus['name']='小翠'
stus['name']='龙龙'#方法1
stus.setdefault('name','晓红')
stus.setdefault('age',18)#方法2
stus.setdefault('sex','')
stus.setdefault('addr','北京')
stus.setdefault('phone',135000)
#区别在于第一种方式可以修改原有的值,setdefault不会修改原值,只有不存在该值才会增加
stus.update({'moeny':1000,a:b,c:d})  #可以理解为把两个字典拼接到一起,而setdefault只能新增一条。
print(stus)

3、改

stus['name']='小明'#和增的写法一样,没值则新增,有值则修改

 4、删

del stus['phone']#删除方法1
stus.pop('phone') #删除方法2,两种无区别
stus.popitem() #随机删除

 5、字典拼接

可以理解为把两个字典拼接到一起,而setdefault只能新增一条k-v。
D={'one':1,'two':2}
D.update({'three':3,'four':4}) # 传一个字典
print(D)
执行结果如下:
{'one': 1, 'two': 2, 'three': 3, 'four': 4}

 6、循环字典

dic = {'stu1':'cc','stu2':'andashu','stu3':'niuniu'}
for k in dic:
    print(k,dic[k])#打印key和value的值,推荐使用这种方式,速度快
for k,v in dic.items():
    print(k,v)#打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高

 7、多层字典

 

all_stus={
    'xiaojun':{
             'sex':'nan',
             'cars':['红旗','宝马']
             },
    'hailong':{
             'age': 14,
             'cars': ['奥迪', '悍马']
             },
    'yangfan':{
             'addrs': '北京',
             'carbagss': ['ysl', '蔻驰']
             }
}

 8、多层字典的增加、修改、删除

all_stus['xiaojun']['cars'].append('五菱宏光')
all_stus['xiaojun']['sex']='nv'
all_stus['xiaojun']['cars'].remove('宝马')

四、字符串(String)

python中的字符串str用单引号('')或双引号("")括起来,同时使用反斜杠(\)转义特殊字符。如果不想让\发生转义,可以在字符串前面加r或R,表示原始字符串,字符串常用的方法
print('Yes, he doesn\'t')print(r'C:\some\name')# 加r表示不使用转义符
password
= ' jpg 123456 JPG ' print(password.strip()) # 去掉字符串两边的空格和换行,换行符是\n,中间的空格去不掉 print(password.rstrip()) # 去掉右边的空 print(password.lstrip()) # 去掉左边的空 print(password.strip(' jpg')) # 去掉首尾的 jpg print(password.upper()) # 英文都变成大写 print(password.lower()) # 英文都变成小写 print(password.capitalize()) # 把首字母改成大写的 print(password.replace('1234', '上山打老虎')) # 将1234替换成“上山打老虎” a = 'a.mp3' print(a.endswith('.mp3')) # 判断是否已xxx结尾,返回布尔类型 print(a.startswith('135')) # 判断是否已xxx开头 names = 'xiaojun,hailong,yangfan,ailing' print(names.split(',')) # 用逗号把每一个元素分隔,也可以自己指定符号,不写默认空格分隔 # ============join方法================ users=['username','user2','user3'] print(users) print(type(users)) #转list转换成字符串,使用常用方法连中括号和引号都成了元素 str_res=str(users) print(str_res) print(type(str_res)) # 使用join方法,将list转换成字符串 # 下面举例使用逗号,其他元素和符号也可以 res=','.join(users) print(res) print(type(res)) #===========zfill自动补0=============
l = list(range(1,11))
new_l = []
for i in l:
si=str(i)
print(si.zfill(5))#自动补0成5位数
#自动补0成5位数
new_l.append(si)
print(type(si))
print(type(new_l))
# =========find 和index的区别==========
s='abcd123'
print(s.find('z'))#找不到z返回 -1
print(s.index('z'))# 找不到z报错
# 都是找元素的下标,先分别用他们去找存在的元素,再找不存在的
print(s.count('z'))#计数
print('0'.isdigit())# 判断是否为正整数
print(s.islower())# 判断是都是小写字母
print(s.isalnum())# 判断字符串里面有英文或者有数字
print(s.isalpha())# 只能是字母
print(s.isspace())#判断是否为空格

#===============python自带方法==================
import string  #生成随机数方法
print(string.ascii_lowercase)#生成小写字母
print(string.ascii_uppercase)#生成大写字母
print(string.digits)#生成数字随机数
print(string.punctuation)#特殊字符
print(string.ascii_letters)#大小写

 

posted @ 2018-08-28 23:23  柠檬不萌!  阅读(887)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end