找回密码
 立即注册
杭州6期1—何茹 +好友
这个人很懒什么都没写
听众
2
主题
19
金钱
236
个人名片
粉丝关注
还没有人关注TA
添加表情

python中的数据结构

已有 189 次阅读2021-4-28 06:51

一、Python中的索引


定义:我们可以直接使用索引来访问序列中的元素,同时索引可分为正向和负向两种,

而切片也会用到索引


Python中的序列,包括字符串(String)、列表(List)、元组(Tuple)


二、Python中的切片

定义:切片是指对操作的对象截取其中一部分的操作,字符串、列表、元组都支持

切片的语法:[start_index : end_index : step]

解释说明:start_index表示起始索引,end_index表示结束索引,step表示步长,步长不

能为0,且默认值为1 

切片操作是指按照步长,截取从起始索引到结束索引,但不包含结束索引(也就是结束索

引减1)的所有元素。


Python中的切片实例


1)切片中如果步长不写则默认为1

2)切片取值从开始索引到结束索引,且结果不包括结束索引位的值

 (取到索引位的前一位)

3)步长从开始索引走起,步长分正负

st= ‘abcdefgihjk’ #step步长值 能取开始索引 不能取结束索引

 默认步长为1

print(st[4]) #显示4 #e 截取当前索引值为4对应的值

print(st[-3]) #显示h # 截取当前索引值为-3对应的值

print(st[0:3]) #abc 从索引值0开始取,到结束索引3 0-2有对应值

print(st[1:3]) #bc 从索引值0开始取,到结束索引3 1-2有对应值

print(st[:-1]) #abcdefgihj #开始值为空,默认取所有,取到-2结

束,-1不包括

print (st[2:-1]) #cdefgihj #从2开始,到-2结束 ,-1不包括

print (st[2:])# cdefgihjk #从2开始,默认后面取所有


print(st[1:6:3])# be #从1开始,6结束,步长是3

print(st[::1]) #abcdefgihjkl #开始值所有:jie

print(st[::-1]) # lkjhgfedcba 面试题目:重点把字符串中的值进

行反向输出
print(st[-2:-5:-1]) #jhi #显示值-2,-3,-4 ,-1是步长 反转;

print(st[:5]) #abcde # 为空则取所有 # #开始索引,结束下标是

5,取到4为止,显示0-4


print(st[:]) #abcdefgihjk # 起始结束都为空则默认取所有


#print(st[-3:-6:-2])#hg #-3开始,-6结束,反转2


三、Python中的字符串
字符串常用函数:
字符串的定义用:要用单引号或者双引号英文 括起来表示
str = ‘abcdefghigkl’
str1= ‘admin:123123’
print(type(str)) #打印类型 <class ‘str’>
print(type(str1)) #打印类型 <class ‘str’>

1、capitalize():首字符大写

str = 'abcd'
print (str.capitalize())

2、count():统计具体字符出现的次数
str = 'abcad'
print (str.count('a'))


3、join():把集合中的字符按自定义的分隔符连接在一起
str ="abcad"
print ('-'.join(str))

4、split():把字符串通过指定标识符进行分割
str ="abcad"
print (str.split('b'))

5、strip(ab):删除字符串开头和结尾有a或b的字符
str ="abcad"
print (str.strip('ab'))

6、lstrip(ab):删除字符串开头有ab序列字符
str ="abcad"
print (str.lstrip('a'))

7、rstrip(ab):删除字符串结尾有ab序列字符
str ="abcad"
print (str.rstrip('d'))

8、startswith():判断字符串是否以什么开始
str ="abcad"
print (str.startswith('a')) #这里输出结果为true或false

9、endswith():判断字符串是否以什么结束
str ="abcad"
print (str.endswith('d')) #这里输出结果为true或false


10、find()/rfind():字符串查询find()是左边开始查,rfind()从右边开始查,结果
显示下标
str1 ="duoceshitest"
print (str1.find("e"))
print (str1.rfind("e"))

11、replace():replace(substring,newstring,max) substring表示被替换的字
符串,newstring要替换字符串,max表示替换的次数
str1 ="duoceshitest"
print (str1.replace("t","a")) #把t替换成a,这全部替换
str1 ="duoceshitest"
print (str1.replace("t","a",2)) #替换两个,从前往后

12、lower():方法转换字符串中所有大写字符为小写
str='ADFASDF'
print (str.lower())

13、upper():将字符串中的所有小写字符转换为大写字母输出
str='ASDFDSsdfsdfSDFDSFSF'
print (str.upper())

14、isdigit():判断字符串中是否全为数字
str='abcd'
print (str.isdigit())

15、isalpha():判断字符串中是否全为字母
str='abcd'
print (str.isalpha())

16、isalnum():判断字符串当中是否全都为数字,全为字母,或者数字字母组合
返回布尔值:True和False 如果有特殊符号就是否
str='1234aa@#$'
print (str.isalnum())

17、istitle():判断字符串中首字母是否为大写,其他是否为小写,其他不为小写则为否
str='A1234'
print (str.istitle())

18、isupper()/islower():is开头的就是判断一个字符串是否展示为都是大写或者都是小写
str.isupper()
str.islower()


四、Python中的列表

列表(list)是一组有序存储的数据,也是python常见的序列之一,序列

中的每个元素都分配一个索引,第一个元素索引是0,第二个元素索引是1,依此

类推。序列都可以进行的操作包括索引,切片,加,乘,检查成员


列表表达符为:[]
定义列表的两种方法:
方法一:list1 = [1,2,3,4] #直接通过[]进行定义
方法二:list2 = list('1234') #使用list()方法进行定义


列表中对应的函数


1、索引和切片赋值
list1 = [1,88,'test','duoceshi']
list1[0] = 666
list1[2:] = list('123')

2、列表中文打印乱码解决方法
a = [1,2,3,"中国"]
print (str(a).decode('string_escape'))
decode():指定编码格式
string-escape:编码格式,能解决因为被\转义的问题

3、append函数:添加一个元素
list1 = [1,2,3,4]
list1.append('duoceshi')
print (list1) 


4、extend函数:连接两个列表
list1=[1,2,3,4,5]
list2 =[6,7,8]
list1.extend(list2)
print (list1) 

extend与append方法的相似之处在于都是将新接收到参数放置到已有列表的后面
append方法可以接收任意数据类型的参数,并且追加到list尾部
extend方法一般和列表还有字符串进行拼接。

5、insert(index,value)函数:在指定位置插入一条数据
list1 = [1,2,3,4]
list1.insert(0,'test')


6、remove函数:移除元素
list1 = [1,2,3,4,1]
list1.remove(1),结果为:[2,3,4,1] 

如果列表中有多个相同的元素,会删除前面那个

7、索引删除值
list1 = [1,2,3,4]
del list1[0]


8、index函数:在列表中查找元素所对应的索引值
list1 = [1,2,3,4]
print (list1.index(1))



9、sort函数:实现列表的升序排列
list1 = [1,2,3,4,1]
list1.sort()
print (list1)



10、sorted函数:实现降序排列
list1 = [1,2,3,4,1]
print (sorted(list1,reverse=True)) #reverse=False是升序排序


11、reverse函数:列表元素反转
list1 = [1,2,3,4]
list1.reverse() 


12、pop函数:
list1 = [1,2,3,4]
print (list1.pop(0))

1.默认移除列表最后一个元素,并返回元素的值
2.移除指定位置的元素list1.pop(0)表示移除第一个元素
3.在列表中pop函数是唯一一个既能改变列表元素又有返回值



五、Python中的元组
定义:元组(tuple)是Python中常用的一种数据结构。元组由不同的元素组成,
每个元素可以存储不同类型的数据,如字符串、数字、甚至元组。元组是'写保护'
的,即元组中元素作为一个整体,创建后不能再做任何修改操作。 

元组表达符为:()
元组的定义:tuple1=(1,2,3)
注意:当元组只有一个元素时,后面要加逗号,如:tuple1=(1,)

1、元组转换为列表
tuple1 = ('a','b','c','d')
list1=list(tuple1)
print(list1,type(list1))

2、列表转换为元组
list1=[1,2,3,4]
tuple1=tuple(list1)
print (tuple1,type(tuple1))

3、元组中的值是不可以直接改变的
tuple1=('a','b','c')
tuple1.insert(0,'d')
print(tuple1)

4、元组中的值是可以间接来改变
tuple1 = ('a', 'b', 'c', 'd')
list1 = list(tuple1) #先改成列表
list1[1] = 'test' #通过列表改值
tuple1 = tuple(list1) #在转换成元组
print(tuple1)


5、元组和列表的区别
相同:
a、都是序列类型的容器对象,可以存放任何类型的数据
b、支持切片、迭代等操作
不同:
a、list 是可变的对象,元组tuple是不可变的对象
b、tuple不可变,所以使用tuple可以使代码更安全


六、Python中的字典
1、字典(dict)是另一种可变容器模型,且可存储任意类型对象。字典的
每个键值key:value对用冒号 : 分割,每个键值对之间用逗号分割,整个字
典包括在大括号 {} 中
2、字典同时是无序,字典都是以键值对的形式存在,先键后值,键是唯一
的,值且不唯一
字典表达符:{}

字典的定义方式:
方式一:
dict1={'name':'duoceshi','age':18} #通过{}直接定义

方式二:
dict1 = [('a',1),('b',2),('c',3)]
dict2 = dict(dict1) #通过dict()方法定义


字典中常见的函数

1、添加一个键值对

dict1 ={"name":"xiaowang","age":"10"}

dict1['sex']=1 如果字典里已经有这个键,旧数据将会替换
print (dict1) 


2、取出键返回列表

dict1 = {"name":"xiaowang","age":"10"}
print (dict1.keys())


3、取出值返回列表

dict1 = {"name":"xiaowang","age":"10"}
print (dict1.values())


4、取出具体键的值
dict1 = {"name":"xiaowang","age":"10"}
print (dict1['name']) 


5、字典添加元素setdefault()
dict1 ={'name':'xiaowang','age':18}
dict1.setdefault('sex','1')
print(dict1)
如果插入数据键已经在字典里,插入是不生效的,默认值为空时,插入数据为None


6、删除字典
dict1 ={"name":"xiaowang","age":"18","sex":"1"}
del (dict1)
print(dict1)


7、删除指定的键,连同值也删除
dict1 ={"name":"xiaowang","age":"18","sex":"1"}
del (dict1["name"])
print (dict1)



8、字典的遍历:for...in...遍历字典
dict1 = {'name':'xiaowang','age':18}
for key in dict1:
print (key,dict1[key])

 
9、使用items()完成遍历
dict1= {'name':xiaowang,'age':18}
for key,value in dict1.items():
print (key,value)


10、pop(key)函数,删除指定键并返回删除的值
dict1 ={"name":"xiaowang","age":"18","sex":"1"}
print (dict1.pop("name"))


 11、clear()清空字典所有项
dict = {'name':xiaowang,'age':18}
dict.clear()
print (dict) 


12、get(key)方法,通过key获取值,当键不存在,返回None
dict = {'name':xiaowang,'age':18}
print (dict.get('name'))


13、fromkeys函数可以给具体的键指定值
dict1 = {'name':xiaowang,'age':18}
print ({}.fromkeys(['name','age'])) #不指定默认值
print ({}.fromkeys(['name','age'],'duoceshi')) #指定默认值为'duoceshi'


14、has_key函数检查字典是否有指定的键,有返回True,没有返回False
dict1 = {'name':'xiaowang','age':18}
print (dict1.has_key('name')) #返回true,因为键存在




15、popitem函数随机返回并删除字典中的键值对(一般删除末尾对)
如果字典已经为空,却调用了此方法,就报出KeyError异常
 dict1 = {'name':xiaowang,'age':18,'class':24}
print (dict1.popitem())
print (dict1)


 16、update函数利用一个字典更新另外一个字典
dict1 = {'name':'xiaowang','age':18}
dict2 = {"sex":1}
dict1.update(dict2)
print (dict1)



 17、update函数利用一个字典更新另外一个字典
dict1 = {'name':xiaowang,'age':18}
dict2 = {"sex":1}
dict1.update(dict2)
print (dict1)


七、Python中的集合

集合是不同元素的无序集合。与序列类型不同,集合是没有切片操作的
语法:set 集合最重要的功能就是去重 集合分可变集合和不可变集合
1)可变集合(set):集合里面的元素是可以发生变化,集合中可以动态的增加和删除。
2)不可变集合(frozenset):集合里面的元素是不可以发生变化
注意:集合中的元素是无序的,且集合后元素不重复
一、可变集合
(1)对列表数据重复的,进行去重
(2)对一个“字符串”进行去重

案例1:对列表数据重复的,进行去重
1、集合:最重要的功能就是去重
1、可变集合set
list1 = [1,1,1,88,88,'duoceshi','dcs']
set1 = set(list1)
set1.add('dcs')
set1.remove('dcs')
set1.pop() #把最前面这个给删除了
set1.clear()
print (set1)


案例二:对一个“字符串”进行去重
test=“hello”
yy=set(test)
print(yy)
打印结果:{‘h’, ‘o’, ‘l’, ‘e’}
2、update 添加集合的内容
第一种方法;
test=“hello”
yy=set(test)
print(yy)
yy.update(“8”)             (添加结合内)
print(yy) # 结果:{‘h’, ‘8’, ‘o’, ‘l’, ‘e’} #打印的结果是以字典的格式输出,集合是无序

第二种方法:
test = ‘hello’
yy = set(test)
yy.add(‘123’) (添加一个值)
print (yy) #结果:set([‘h’, ‘123’, ‘e’, ‘l’, ‘o’])注意结果是无序的


3、clear 清除集合种的内容
test = ‘hello’
yy = set(test)
yy.clear() #清除集合中的内容
print (yy) # 结果:set() 空集合


4、pop 删除集合中的内容
pop()方法用于随机移除一个元素例如:set.pop()
这里删除的是第一位
test=“hello”
yy=set(test)
yy.pop()     集合的删除是无序的
print(yy) # 结果: {‘e’, ‘o’, ‘l’}  结果:随机

5、remove 删除指定的内容
a=(‘99’,‘88‘)
yy=set(a)
yy=remove(‘88’)集合中具体
print (yy) #打印结果:{‘99’}

6、复制集合
test = ‘hello’
yy = set(test)
s=yy.cop()       copy复制集合
a=yy.copy()   打印集合   
print (a)         打印复制的集

二、不可变集合
不可变集合 frozenset
只能使用copy:
第一种情况:copy(只能对不可变集合复制,)
test = ‘hello’
yy = frozenset(test)    不可变集合
a = yy.copy()               复制不可变集合
print (a) #显示结果:frozenset({‘o’, ‘h’, ‘l’, ‘e’})

第二种情况:对不可变集合进行添加,都是报错,只能复制
test = ‘hello’
yy = frozenset(test)
yy.add(‘123’) #AttributeError:
print (yy)
#打印结果:‘frozenset’ object has no attribute 'add’译文:‘frozenset’对象没有属性’add’

第三中情况:对不可变集合进行删除
test = ‘hello’
yy = frozenset(test)
yy.pop() #删除集合中的内容,不可变集合不能进行操作
print (yy) # 结果: AttributeError: ‘frozenset’ object has no attribute ‘pop’



评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册