python数据类型

1. 认识“数字”

Python没有int float这样的关键字,但实际数字的类型是区分int float这样的类型的,使用内建函数type可以查看变量的类型

  • int(整数)
a = 1   #整数
print(type(a))
  • float(小数)
a = 1.0  #小数
print(type(a))
  • complex(复数)
a = 10 + 5j  #复数
print(type(a))

python数据类型_第1张图片

2. 认识“字符串”

  • Python中可以使用单引号、双引号、三引号来表示字符串,没有使用场景限制,什么时候使用都可以,需要遵循的原则是引号配对(前面为单引号,后面也要是单引号)
  • Python没有字符类型的概念,单个字符也是字符串,只要在引号里的,统称为string类型

2.1 字符串的展示

#字符串的使用
 name1 = 'xuxian01'  #单引号
 print(name1)

 name2 = "xuxian02"  #双引号
 print(name2)

 name3 = '''xuxian03'''  #三引号
 print(name3)

python数据类型_第2张图片

2.2 字符串中带有引号

#输出字符串里面想要带有引号
#保证字符串最外层的引号与里面带的引号不一致即可
name4 = '"xuxian"04' #带双引号
print(name4)
name5 = "xu'xian'05" #带单引号
print(name5)
name6 = '''"xu"'xian'06''' #带单双引号
print(name6)

python数据类型_第3张图片

2.3 转义字符

有些不可见字符,需要进行转义,使用\进行转义,比如换行符\n

#换行
str1 = 'hello world \nhahahha'
print(str1)
#想要输出\n,不让它带有换行含义,使用\\n
str2 = 'hello world \\nhhhh'
print(str2)

python数据类型_第4张图片

2.4 字符串切片

  • 使用索引操作符[]或者切片操作符[:]来获取子字符串
  • 切片操作是一个左闭右开区间
  • 字符串的索引规则是:第一个字符索引是0,最后一个字符索引是-1
2.4.1 单独取一个字符
#字符串切片
name = '你abcdefghklyt'
#单独取一个字符
print(name[0])  #正取,取第一个字符,下标为0
print(name[-1])  #倒取,取最后一个字符,下标为-1

python数据类型_第5张图片

2.4.2 取一个片段
#取一个片段
name ='abcdghjklou'
print(name[0:2])  #左闭右开
print(name[4:7])  #取下标为4-6的字符
print(name[:3])  #省略前面的数字时,从0开始取,取到2
print(name[3:])  #省略后面的数字时,从3开始取,显示后面的所有字符
print(name[:])  #正无穷到负无穷,全部取

python数据类型_第6张图片

2.4.3 等差取值
#等差取值
name = 'abcdefghyjko'
print(name[::2])  #隔1个字符取一个值
print(name[::3])  #隔2个字符取一个值
print(name[::-3])  #翻转取值

python数据类型_第7张图片

2.5 字符串运算

+用于字符串连接运算,*用于字符串重复

name1 = 'guojing'
name2 ='huang rong'
print(name1+name2)  #加法:连接字符串,无缝拼接
print(name1,name2)  #逗号:有空格
print(name1*4)  #乘法:重复4次,只能和正整数相乘,代表重复几次

python数据类型_第8张图片

2.6 获取字符串长度

name ='guojing'
print(len(name))  #获取字符串长度

python数据类型_第9张图片

2.7 格式化字符串

  • %d 格式化整型
  • %s 格式化字符串
user_name = '郭靖'
number = 666
print('尊敬的%s用户,欢迎您'%user_name)  #单个格式化
print('尊敬的%s用户,您的抽奖编号是%d'%(user_name,number))  #多个格式化

python数据类型_第10张图片

2.8 原始字符串(raw strings)

对于一些有特殊含义的字符,我们不希望它有特殊含义,则使用原始字符串解决(在字符串前面加r),打开文件夹时最常用

print(r'hello\nworld')

2.9 字符串合并和拆分(常用)

2.9.1 合并
#字符串合并
b = '-'  #b是一个字符串
a = ['aa','bb','cc','dd']  #a是一个列表
print(b.join(a))  #字符串合并
b =''  #b是一个空字符串
print(b.join(a))  #无间隙合并字符串

python数据类型_第11张图片

2.9.2 拆分
#字符串拆分
a = 'aa bb cc dd'
print(a.split(' '))  #字符串拆分成列表
b = 'aa-bb-cc-dd'
print(b.split('-')) 

python数据类型_第12张图片

2.10 字符串常用函数

2.10.1 判断字符串开头结尾

进行一个连续的匹配,比如判断是否以某个字符串开头时,只要从开头第一位往后能够连续匹配该字符串(空格也要算),即为true,否则为false

#判断开头结尾,空格不能省
a = 'hello world my name is lily'
print(a.startswith('hello world'))  #判断是否以hel开头
print(a.endswith('islily'))  #判断是否以world结尾

python数据类型_第13张图片

2.10.2 去除字符串开头结尾的空格/换行符

strip:消除字符串首尾的空格和换行符

#strip:消除字符串首尾的空格和换行符
#备注:print函数本身末尾就自带一个换行符
name = '    guojing  huangrong  \n'
print(name)
print(name.strip())

python数据类型_第14张图片

2.10.3 查找子串

返回这个字符串开始的下标

#在字符串中查找子串
name = 'guojing huangrong'
print(name.find('jing'))  #如果找到,返回子串第一个字符的下标
print(name.find('is'))  #如果没找到,则返回-1

python数据类型_第15张图片

2.10.4 替换子串

字符串是不可变对象,只能生成新字符串

#替换子串,replace:存在多个相同子串时,会被同时替换
name = 'my name is guojing,guojing'
new_name = name.replace('guojing','huangrong')
print(name)  #replace不会改变字符串本身,是临时修改
print(new_name)

python数据类型_第16张图片

2.10.5 判断字符串是字母/数字
关键字 含义
str.isalpha() 字符串只包含字母时返回true,否则返回false
str.isdigit() 字符串只包含数字则返回true,否则返回false
#判定字符串是字母/数字
a = 'abhjkk'
b = 'adbs1'
c = '12345'
d = '123.5'
print(a.isalpha())  #返回true
print(b.isalpha())  #返回false
print(c.isdigit())  #返回true
print(d.isdigit())  #返回false

python数据类型_第17张图片

3. 认识“布尔类型”

  • 布尔值有2个:真和假,Python中用True和False来表示布尔值(第一个字符要大写
  • 布尔类型的变量,也是一种特殊的整数类型,在和整数进行运算时,True被当做1,False被当做0
a = True
b = False
print(type(a))  #布尔类型
print(type(b))
print(a+6,a*6)  #布尔类型运算
print(b+6,b*6)

python数据类型_第18张图片

4. 列表list/元组tuple

4.1 列表和元组的介绍

  • 列表和元组类似于C语言中的数组,使用[]来表示列表,使用()表示元组

  • 列表和元组能保存任意数量、任意类型的Python对象(int float bool等),列表里还可以嵌套列表

  • 可以使用下标来访问里面的元素,下标从0开始,最后一个下标为-1,以逗号分隔

  • 可以使用[:]切片操作得到列表或元组的子集,与字符串操作一样

#列表和元组,里面可以放任意字符类型的元素
liebiao=[1,'hu',1.5,True,[1,2,3],(3,False)] #列表
print(type(liebiao))  #类型是list
print(liebiao[0],liebiao[-1]) #以逗号分隔,有括号的是一个整体

yuanzu=(1,'hu',1.5,True,[1,2,3],(3,False)) #元组
print(type(yuanzu))  #类型是tuple
print(yuanzu[0],yuanzu[-1])

python数据类型_第19张图片

4.2 列表与元组的区别

面试很可能会问
列表里面的元素是可以任意被修改的,包括新增、删除、修改,元组里面的子元素是不可以被修改的,但是如果子元素本身是一个可以被修改的对象,比如说列表和字典,我们可以改列表和字典里面的内容,但我们不能把这个元素整个改掉

#元组元素可被修改的情况:元组元素中存在可变对象
yuanzu = (1,'zhang',[1,2,3,4])
print(yuanzu)  #修改前
yuanzu[-1][0]=55  #单独写[-1]仍然会报错,需要指定列表里面的元素下标
print(yuanzu)  #修改后,列表里面的元素被修改

python数据类型_第20张图片

4.3 列表修改方法

#列表的修改
liebiao = ['zhang','wang','li','zhao']
print(liebiao[0])  #修改前
liebiao[0] = 'qian'  #修改列表
print(liebiao[0])  #修改后

python数据类型_第21张图片

4.4 排序 sorted/sort

  • 这是一个非常有用的函数,返回一个有序的序列
  • Sorted支持自定制排序规则
4.4.1 sorted
#排序,sorted不会改变a本身的值,sort会改变
a = [1,3,4,2]
print(sorted(a))  #正常默认从小到大排序
print(sorted(a,reverse = True)) #从大到小排,加reverse(反转)
print(a) #a本身不被改变
4.4.2 sort
b= [1,3,4,2]
b.sort()  #从小到大排序
print(b)  #b本身被改变
b.sort(reverse=True)  #从大到小排序
print(b)
4.4.3 长度排序
#长度排序
a = ['aaaa','bbb','cc','d']
print(sorted(a,key = len))  #按照长度排序,从短到长排
print(sorted(a,key = len,reverse=True))  #从长到短排

python数据类型_第22张图片

4.5 列表常用操作

4.5.1 新增元素
#列表新增元素
liebiao = [1,2,'bcbx']
print(liebiao)  #新增前
liebiao.append([1,4])  #新增元素
print(liebiao)  #新增后

python数据类型_第23张图片

4.5.2 删除元素
#删除列表元素:del   remove
#del:删除指定下标元素
#remove:按值删除元素,一次只能删除1个值,如果要删除多个相同的值,需要执行多次
liebiao = [1,2,'bcbx',1,'3',1,[1,4]]
print(liebiao)   #输出原始列表
del liebiao[-1]  #del:删除最后一个元素
print(liebiao)
liebiao.remove(1)  #按值删除元素,若有多个相同值,则删从前往后数第一个
print(liebiao)
liebiao.remove(1)  #想要删除1,需要多次执行这个语句
print(liebiao)

python数据类型_第24张图片

4.5.3 列表比较操作
  • 相等:列表所有元素都相等,则认为列表相等
  • 大小:两个列表从第一个元素开始依次比较,直到某一方胜出
#列表比较大小:列表中的元素从左往右依次比较,且必须是同类型元素比较
#如果字符串与数字比较,会报错
a = ['abc',1233]
b = ['xyz',789]
c = ['abc',823]
print(a<b)  #abc
print(b<c)  #xyz>abc,故结果为false
print(a>c)  #abc=abc,1233>823,故结果为true
print(b>c and a==c)  #b>c为true,a==c为false,做and运算,整体结果为false

python数据类型_第25张图片

5. 字典dict

  • 字典是Python中的映射数据类型,存储键值对(key-value),使用{}表示
  • 几乎所有类型的Python对象都可以用作键,不过一般还是数字和字符串最常用
  • 键不能重复,即key是唯一的,是查字典的唯一依据,值可以重复(可以对比新华字典)
  • Key是唯一的,必须存在,且不能为空(即不能没有key,光有value) 取值不支持按下标取,是按key来取值

5.1 新增/修改字典

#字典dict
zidian = {
     'ip':'171.2.3.191','user_name':'admin','password':'admin123'}
print(type(zidian))  #字典的类型是dirc
print(zidian)  #输出zidian
print(zidian['ip'])
zidian['port'] = 80  #新增字典元素
print(zidian)
zidian['ip'] = '171.2.3.198'  #修改字典元素
print(zidian)

python数据类型_第26张图片

5.2 删除字典(del clear pop)

关键字 含义
del 按照key,将key与value这一对同时删除
clear 全部删除,删除之后会变成一个空字典
pop 删除键值对,但可以拿到被删除的值
#字典删除的三种方式:del  clear  pop
zidian = {
     'ip':'171.2.3.191','user_name':'admin','password':'admin123'}
del zidian['ip']  #del:按照key,将key与value这一对同时删除
print(zidian)
uname = zidian.pop('user_name')  #pop:括号里跟要删除的键值对
print(uname)  #与del和clear不同的是,pop可以拿到被删除的值
print(zidian)
zidian.clear()  #clear:全部删除,删除之后会变成一个空字典
print(zidian)

python数据类型_第27张图片

5.3 获取字典的key和value

zidian = {
     'ip':'171.2.3.191','user_name':'admin','password':'admin123'}
print(zidian.keys())  #获取字典中所有的key
print(zidian.values())  #获取字典中所有的value
print(zidian.items())  #同时获取字典中的key和value,将键值对放到一个列表中,每一个键值对是一个元组

python数据类型_第28张图片

你可能感兴趣的:(Python理论基础,python)