python第三天

高级数据类型

计算机是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在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() 同时移除两侧空白(同理:lstriprstrip只能移除左侧或右侧)

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'))  #不存在的时候会报错

 

5endswith/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'))

 

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

 

7isalnum()判断是否是字母和数字;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())

8split()分割字符串,通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(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'))

9count()统计某内容出现的次数

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'))

10join()循环取出所有值并用‘xx’去连接

a='123456hubert 张 xx'

print('-'.join(a))

print(''.join(a))  #空字符连接

11replace()是一个替换函数 其使用格式为 变量 .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)  #复制三次

1append()函数,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)

2extend():批量增加

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、删除:delremovepop

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

原文地址:https://www.cnblogs.com/giaogiaogiao/p/14463105.html