求知讲堂python+人工智能day3

高级数据类型

计算机是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有:数字、字符串、列表、元组、字典等。

序列

  • 在python中,序列就是一组按照顺序排列的值(数据集合)(字符串就是序列)
  • Python中包含三种内置的序列类型:字符串,列表和元组。(字典不属于序列)
  • 序列的优点:支持索引和切片的操作;
  • 特征:第一个正索引为0,指向的是左端,第一个索引为负数的时候,指向的是右端。

1、字符串(str)及常用方法

下标和切片
  • 字符串有下标,切片是指截取字符串中的其中一段内容
  • 切片使用语法:[起始下标:结束下标:步长] ,默认步长为1
  • 切片截取的内容不包含结束下标对应的数据,步长指的是隔几个下标获取一个字符。
  • 切片的高级特性:可以根据下标获取序列对象的任意(部分)数据;
    在这里插入图片描述
    在这里插入图片描述

切片

格式:slice[start:end:step]

a='hello word'
print(a)
print(len(a))  #包含空格
print(a[0])
print(a[2:7])  #左闭右开,其实是2-6的索引
print(a[2:])
print(a[:3])
print(a[::-1])

在这里插入图片描述

常用的函数(好多即适用字符串又适用列表元组之类的)

1.capitalize() 首字母变大写;title()把每个单词的首字母变成大写

首位数不是字母就不用变

a='hubert_alex'
b='hubertalex'
c=' hubert'
d=' hube12rt  alex'
e='i love you'
print(a.capitalize())
print(b.capitalize())
print(c.capitalize())
print(d.capitalize())
print(e.capitalize())

在这里插入图片描述
将不是字母后的字母自动识别为首字母

a='hubert_alex'
b='hubertalex'
c=' hubert'
d=' hube12rt  alex'
e='i love you'
print(a.title())
print(b.title())
print(c.title())
print(d.title())
print(e.title())

在这里插入图片描述

2.strip() 同时移除两侧空白(同理:lstrip和rstrip只能移除左侧或右侧)
name='    huber张t       '
name1='    huber张t'
name2='huber张t      '
name3='huber 张 t      '
print('huber张t移除两侧空白:%s'%name.strip())
print('huber张t移除左侧空白:%s'%name1.strip())
print('huber张t移除右侧空白:%s'%name2.strip())
print('huber张t不能移除中间空白:%s'%name3.strip())

在这里插入图片描述

3.查看内存地址id()

在这里插入图片描述

4.find()与index()查找目标对象在序列对象中的索引值
# find查找
a='i love python'
print(a.find('p'))
print(a[a.find('p')])
print(a.find('py'))
print(a.find('m'))  #不存在的时候返回-1
print(a.find('o'))  #有多个时候,只找到第一个的索引值
#index函数
print(a.index('p'))
print(a.index('py'))
print(a.index('o'))
# print(a.index('m'))  #不存在的时候会报错

在这里插入图片描述

5、endswith/startswith()是否 x结束/开始
a='i love python'
print(a.startswith('i '))
print(a.endswith('on'))
print(a.startswith('i'))
print(a.endswith('n'))
print(a.startswith('I '))
print(a.endswith('N'))

在这里插入图片描述

6、swapcase大写变小写,小写变大写;lower/upper 大小写转换;islower()判断是否是小写

在这里插入图片描述
在这里插入图片描述

7、isalnum()判断是否是字母和数字;isalpha()判断是否是字母 ;isdigit()判断是否是数字
a='abc123'
b='Abc1235'
c='aCb'
d='abc12@!'
e='123'
print(a.isalnum())
print(b.isalnum())
print(d.isalnum())
print(a.isalpha())
print(b.isalpha())
print(c.isalpha())
print(d.isalpha())
print(a.isdigit())
print(d.isdigit())
print(e.isdigit())

在这里插入图片描述

8、split()分割字符串,通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
a='i love       python'
# split不带参数的时候以空格(不管几个空格)进行分割标识
print(a.split())
print(type(a.split()))
a='www.python.com'
# 以.为分割标识符
print(a.split('.'))
# 分割一次
print(a.split('.',1))
# 分割两次,取第一个分片(序号为0)
print(a.split('.',2)[0])
# 分割两次,并把分割后的三个部分保存到三个变量中
b,c,d=a.split('.',2)
print(b)
print(type(b))
print('案例')
a='http://www.python.com/hjorth/p/5566677.html'
print(a.split('//'))
print(a.split('//')[1].split('.'))
print(a.split('//')[1].split('.')[1])
print('案例2')
a='kkkkkkpythonkkkiskkkgoodkk'
print(a.split('k'))
print(a.split('kk'))

在这里插入图片描述

9、count()统计出现的次数
a='Hello word! Hello Python!'
print(a.count('H'))  # 默认从0开始索引
print(a.count('H',2))  # 设置从2开始索引,有1个H
print(a.count('H',13))  # 从13开始,有0个H
print(a.count('H',0,100))  # 在0-100内索引
print(a.count('H',1,100))  # 在1-100内索引
print(a.count('th'))

在这里插入图片描述

10、join()循环取出所有值并用‘xx’去连接
a='123456hubert 张 xx'
print('-'.join(a))
print(''.join(a))  #空字符连接

在这里插入图片描述

11、replace()是一个替换函数 其使用格式为 变量 .replace('要替换的值','替换后的值')
# 替换空格
a='  i love pyth on !'
print(a.replace(' ',''))

在这里插入图片描述

2、列表(list)及常用方法

  • python中重要的数据结构,是一种有序的数据集合
  • 支持增删改查 列表中的数据是可以变化的【数据项可以变化,内存中的地址不会改变】
  • []来表示列表类型,数据项之间用逗号来分割,注意:数据项可以是任何类型的数据
  • 支持索引和切片来进行操作
列表中常用的函数
1、切片(查找,获取)
# li=[]  # 空列表
li=[1,2,3,'hubert', '张','HaAJJ',True]
print(type(li))
print(li)
print(len(li))
str='我喜欢python'
print(len(str))
# 切片
print(li[0])
print(li[2:4])
print(li[::-1])
print(li*3)  #复制三次

在这里插入图片描述

1、append()函数,insert()函数
# append()函数:在后面增加
li=[1,2,3,'hubert', '张','HaAJJ',True]
print('增加列表前:',li)
li.append(['fff','ddd'])
print('增加列表后:',li)
li.append(888)
print('增加数字:',li)
li.append('ioui222')
print('增加字符串:',li)
# insert()函数:指定插入
li.insert(1,'在1位置插入这句话')
print('在1位置插入这句话:',li)

在这里插入图片描述

2、extend():批量增加
intdata=range(10)
print(type(intdata))
print(intdata)
lia=list(intdata)  # 强制转换成list
print(type(lia))
print(lia)
li=[1,2,3,'hubert', '张','HaAJJ',True]
print(li)
li.extend(lia)  # 不能直接写在print里面
print(li)
li.extend([11,12,13])
print(li)

在这里插入图片描述

3、修改:通过索引值找到,重新赋值
li=[1,2,3,'hubert', '张','HaAJJ',True]
print('修改前:',li)
li[0]='xx'
print('修改后:',li)

在这里插入图片描述

4、删除:del,remove,pop
li=list(range(10,50))
print(li)
del li[0]
print(li)
del li[1:4]  #批量删除
print(li)
li.remove(20)  #移除指定元素
print(li)
li.pop(2)  # 移除指定项的索引值对应的元素
print(li)

在这里插入图片描述

5、反转:reverse
li=list(range(10,50))
print(li)
li.reverse()
print(li)
li=[1,2,3,'hubert', '张','HaAJJ',True]
print(li)
li.reverse()
print(li)

在这里插入图片描述

7、排序:sort

sort函数定义:sort(cmp=None, key=None, reverse=False)
cmp:用于比较的函数(大于时返回1,小于时返回-1,等于时返回0),比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 或者 reverse = False,有默认值。

a = [2, 1, 4, 9, 6]
print(a)
a.sort()  #内置cmp是升序,默认reverse=False
print(a)
L = [('a', 3), ('d', 2), ('c', 1), ('b', 4)]
print(L)
a = sorted(L)
print(a)
b=sorted(L,reverse=True)
print(b)

在这里插入图片描述

alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
print(alist)
alist.sort()
print(alist)  # 原始的按照升序
# 多级排序,先按照每个里面的第3个元素排序,然后按照第2个元素排序:
alist.sort(key = lambda x:(int(x[2]),int(x[1])))
print(alist)

在这里插入图片描述
key负责指定排序的比较顺序,reverse=True表示按照升序,False表示按照降序

3、元组(tuple)及常用方法

  • 是一种不可变的序列,在创建之后不能做任何的修改,因此需要转换为其他格式 (因此不能进行修改,只能进行查找)
  • 用小括号创建元组类型
  • 当元祖中只有一个元素的时候,要加上逗号,不然解释器会当做整型或者其他类型来处理
    在这里插入图片描述
查询
tupleA=('ABCD','abcd',12,34,'张',[11,22,33],(1,2,3))
print(tupleA)
for i in tupleA:
    print(i,end='')
    pass
print()
print(tupleA[2])
print(type(tupleA[2]))  # 切片取一个就不是元组类型
print(tupleA[1])
print(type(tupleA[1]))  # 切片取一个就不是元组类型
print(tupleA[2:5])
print(type(tupleA[2:4])) # 切片区取个就还是元组
print(tupleA[::-1])
print(tupleA[::-2])  # 表示反转字符串,并步长为2
print(tupleA[::-3])  # 表示反转字符串,并步长为3
print(tupleA[-2:-1:])
print(tupleA[-4:-2:])
print(tupleA[-4:-6:])
print(tupleA[-4:-6:-1])

在这里插入图片描述

元组中的列表可以被修改(重点)
# 修改
tupleA=('ABCD','abcd',12,34,'张',[11,22,33],(1,2,3))
print(type(tupleA))
print(type(tupleA[0]))
print(tupleA)
# tupleA[0]='python' # 元组中的字符串不能修改
# tupleA[2]='python' # 元组中的整型不能修改
print(type(tupleA[5]))
tupleA[5][0]='python' # 元组中的列表可以修改
print(tupleA)

在这里插入图片描述

4、字典(dict)及常用方法

  • 字典不是序列,所以不能通过索引来访问;(是一种无序的键值集合,没有下标)
  • 字典是Python的中重要的一种数据类型,可以存储任意对像。字典是以键值对的形式创建的集合,{'key':'value'}利用大括号包裹,通常使用键来访问,效率极高。
  • 访问值的安全方式get方法,在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值。
  • 字典的键(key)不能重复,值(value)可以重复,如果出现重复的键,后者会覆盖前者。
  • 字典的键(key)只能是不可变类型,如数字,字符串,元组。
    在这里插入图片描述
创建字典
# 创建字典
dictB={'name':'刘德华','age':45,'major':'歌手'}
print(dictB)
# 字典可以添加
dictA={} # 空字典
dictA['name']='刘德华'
dictA['age']=45
dictA['major']='歌手'
print(type(dictA))
print(dictA)
print(len(dictA))  #一个键值对表示一个长度
# 通过键来查找和获取
print(dictA['name'])
# 修改
dictA['name']='张学友'
print(dictA)
# 获取所有的键
print(dictA.keys())
# 获取所有的值
print(dictA.values())
# 获取所有键值对
print(dictA.items())
for keys,values in dictA.items():
    # print('%s==%s'%(keys,values))
    print('{}=={}' .format(keys, values))
# 更新(已经存在的更新,不存在的添加)
# dictA.update=({'age':50},{'height':1.85}) # 只能一个一个更新
dictA.update({'age':50})
print(dictA)
dictA.update({'height':1.85})
print(dictA)
# 删除
del dictA['name']
print(dictA)
dictA.pop('age')
print(dictA)

在这里插入图片描述

字典排序
# 字典排序(通过ACCII码)
# 按照keys排序
dictA={'name':'刘德华','age':45,'major':'歌手'}
print(dictA)
print(sorted(dictA.items(),key=lambda d:d[0]))  #按照key中的英文来排序,d[0]表示key
# 按照values来排序(前提是类型的一样,age中是int其是str)
dictA.update({'age':'45'})
print(sorted(dictA.items(),key=lambda d:d[1]))   #d[0]表示values

在这里插入图片描述

5、共有方法

1、合并:两个对象相加操作,会合并两个对象+(字符串,列表,元组)
strA='人生苦短,'
strB='我用python!'
listA=[1,2,3,'hubert']
listB=[4,5,6,'hubert']
tupleA=('xx',1,2)
tupleB=('yy',4,5)
print(strA+strB)
print(strB+strA)
print(listA+listB)
print(tupleA+tupleB)
# print(strA+listB) # 报错
# print(strA+tupleB) # 报错
# print(tupleA+listB)  #报错

在这里插入图片描述

2、复制:对象自身按指定次数进行 + 操作*(字符串,列表,元组)
strA='人生苦短,'
listA=[1,2,3,'hubert']
tupleA=('xx',1,2)
print(strA*3)
print(listA*2)
print(tupleA*4)

在这里插入图片描述

3、判断指定元素是否存在于对象中in(字符串,列表,元组,字典
strA='人生苦短,我用python'
listA=[1,2,3,'hubert']
tupleA=('xx',1,2)
print('生' in strA)
print('生 我' in strA) #False
print('py' in strA)
print(',' in strA)
print(1 in listA)
print('hubert' in listA)
print('hu' in listA)  # False
print('xx' in tupleA)
print(1 in tupleA)
print('x' in tupleA)  # False
# 字典判断key在不在
dictA={'name':'刘德华'}
print('name' in dictA)
print(dictA)
print('刘德华' in dictA) # False

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值