首页 > 编程语言 > 详细

python学习笔记(二):python数据类型

时间:2018-08-29 00:21:35      阅读:168      评论:0      收藏:0      [点我收藏+]
计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。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
 

二、列表/数组(list)

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。通过下标访问列表中的元素(又称索引、角标),下标从0开始计数。list定义,使用中括号[],里面的每一个值叫做元素。
list1 = [1,2,3,4] #一个普通的数组
list2 = [marry,lily,[50,monkey]] #二维数组
list3 = [name,sex,[lily,124,[aaaa,bbb]]] #三维数组,嵌套几层就是几维

 1、增

name=[牛牛,帆帆,月月,666,aaa,68.99]#定义一个list列表
name.append(小月)# 默认在最后面添加元素
print(name)
name.insert(0,小军)#指定下标位置添加元素
print(name)
执行结果如下:
[牛牛‘, 帆帆‘, 月月‘, 666, aaa‘, 68.99, 小月] [小军‘, 牛牛‘, 帆帆‘, 月月‘, 666, aaa‘, 68.99, 小月‘]

 2、改

name=[牛牛,帆帆,月月,666,aaa,68.99]#定义一个list列表
print(修改之前:,name)
name[0]=晓红#指定下标0的元素修改成“晓红”
print(修改之后:,name)
执行结果如下:
修改之前: [牛牛‘, 帆帆‘, 月月‘, 666, aaa‘, 68.99] 修改之后: [晓红‘, 帆帆‘, 月月‘, 666, aaa‘, 68.99]

3、查

name=[牛牛,帆帆,月月,666,aaa,68.99]#定义一个list列表
print(name[0]) # 获取第一个元素
print(name[-1]) # -1代表最后一个元素

输出的结果是: 牛牛
68.99

4、删

name.remove(aaa) # 删除指定的值,如果有两个一样的,只会删除前面的
del name[0] # 删除指定位置的值
name.pop() # 不传入下标的话,删除最后一个值,传入下标删除指定位置的值
name.clear() # 清空列表

 5、list其他操作方法:

name=[大牛,帆帆,月月,666,aaa,68.99]#定义一个list列表
name2 = [1, 2, 3, 4, [hehe, haha]]
print(len(name))#获取个数/长度
print(name.index(帆帆)) # 取索引
print(name.count(帆帆)) # 取帆帆出现的次数
print(name*2)#乘法
print(name+name2)#加法
name.reverse() # 反转的写法之一
name.sort(reverse=True)#反转写法之二
name.extend(name2) # 扩展列表,也就是把name2的值加到name里面
print("hello" in name)#检查成员

 6、切片

切片也就是另一种方式获取列表的值,它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束,获取他们之间的值,格式是name:[0:6],意思说要获取name的第一个元素到第五个元素,切片是不包含后面那个元素的值的,记住顾头不顾尾;前面的下标如果是0的话,可以省略不写,这样写,name[:6],切片后面还有可以写一个参数,叫做步长,也就是每几个元素,取一次,切片操作也可以对字符串使用,和列表的用法一样

(1)列表切片

l=list(range(1,11))#自动生成1-10的数,然后类型转换成列表list
print(l)
print(l[0:4])#顾头不顾尾,取下标0,1,2,3
print(l[:5])#如果最前面没有写的话,代表从0开始取
print(l[4:])#如果冒号后面没有写,代表取到最后
print(l[:])
print(l[0:8:2])#步长,每2个取一个
print(l[::2])
print(l[1::2])#打印1-10的所有偶数
print(l[::2])#打印1-10的所有奇数
print(l[::-2])#如果步长是负数,那么从右往左取值

 (2)多维数组的切片

nums1=[1,2,3,[4,56]]
nums2=[1,2,3,4,[a,b,c,d,e,[,,]],[,]] #三维数组
print(nums1[3][1])#要取56
print(nums2[4][5][1])#
print(nums2[-1][-1])#

 (3)字符串切片

for i in range(10):
 s=input(请输入一个字符串:)
 if len(s)<2:
 print(请输入大于2位的字符串)
 elif s==s[::-1]:
 print(是回文)
 else:
 print(不是回文)

 6、枚举函数

enumerate()是python的内置函数,enumerate在字典上是枚举、列举的意思。对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
enumerate多用于在for循环中得到计数。
# i存的是下标
for i,j in enumerate((a,b,c)):
 print(i,j)
 
pwd=[123,456,789]
for index,p in enumerate(pwd):
 pwd[index] = abd_ + p
 print(pwd)

 7、小练习

# 注册,校验用户是否存在,如果用户不存在就说明可以注册
users=[大发,冰冰,111]
for i in range(5):
 username=input(请输入用户名:)
 # if users.count(username)>0:
 if username in users: #以上两种方法都可以,in是判断在不在里面
 print(用户名已注册)
 else:
 print(用户未注册)
 users.append(username)#将用户名添加到列表中
 print(users)
 break
else:
 print(输入次数过多)

 三、元祖(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(stus.keys()) #查询所有的键
print(stus.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:e:f})  #可以理解为把两个字典拼接到一起,而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(rC:\some\name)
 
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(,))#用逗号把每一个元素分隔,也可以自己指定符号,不写默认空格分隔

python学习笔记(二):python数据类型

原文:https://www.cnblogs.com/haifeima/p/9551645.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!