第四章 Python的数据结构

4.1 元组

4.1.1 创建

#多个元素
tuple = ('元素1','元素2')

#空元组
tuple = ()

#单元素,注意元素后要加逗号
tuple = ('元素',)

4.1.2 访问

#####访问格式
tuple[n]
####################################

#索引值从0开始,可以是正数,也可以是负数,最尾端表示-1,次尾端表示-2,以此类推
print(tuple[1])

#####元组的元素不可添加或删除,创建后的元组不可重新赋值
~~tuple[0] = 'a'~~

#######元组支持分片
tuple[1:-3]#从第三个元素到倒数第二个(不包括倒数第二个)
#####元组可以由其他元组组成,例如二元元组。
tuple = (('z', 'x'),('c', 'v'))
tuple[0][1] = x   ##类似二维数组

4.1.3 遍历

###1.len()计算元组的元素个数

###2.range()返回一个由数字组成的列表
#start表示列表开始的值,默认为0;
#stop表示列表结束值;
#step表示步长,每次递增或递减的值,默认1
range([start,]stop[,stop])
for i in range(len(tuple)):
	print ("tuple[%d]:'%i,'")

###3.for...in
tuple=('a, z', 'b, m', 'c')
for i in tuple:
	for j in i:
		print(j)

4.2 列表

4.2.1 增删改查

列表与元组相似,但列表可以实现增删改查几种操作,也同样支持负数索引、分片以及多元列表等特性。

###1.创建
list = [元素1, 元素2,...]

###2.添加元素
# append()可在列表末尾添加元组、列表、字典或任何对象
list.append()
# insert()在指定索引index处插入一个对象
list.insert(index,object)

###3.删除
list.remove(value)  # 当被删除元素不止一次出现时,remove()将删除首次出现的元素
list.pop([index])	# 删除索引index指定的值,如果index不指定,则删除列表末尾元素

###4.查找
list1 = ['z','x','c','v']
print(list1.index('x'))		# 打印x的索引,输出结果为2
print('c' in list1)			# 判断c是否在列表中,返回Ture

###5.排序和反转
list1 = ['z', 'x', 'c', 'v']
list1.sort()				
print('sorted list:', list1) # 排序,升序输出
list1.reverse()
print('reversed list:', list1) # 反转元素顺序输出

4.2.2 分片

list1 = ['a', 'c', 'b', 'n', 'm']
print(list1[-2])  # 输出 n
print(list1[1:3])  # 输出 ['c', 'b']
print(list1[-3:-1])  #输出 ['m', 'n']
print(list1[:])  # 从左向右输出
print(list1[::])  # 从左向右输出
print(list1[::-1])  # 从右向左输出

4.2.3 连接

###连接的三种方式
list1 = ['z', 'x']
list2 = ['c', 'v']
list1.extend(list2)    # list1连接list2
print(list1)
list3 = ['b']
list1 = list1 + list3   # list1与list3连接赋给list1
print(list1)
list1 += ['n']         # 给list1连接上['n']

除了增删改查之外,列表可以实现堆栈和队列

堆栈:后进先出,append() 把元素添加到栈顶,调用 pop() 将最后一个元素(即 append()添加的元素)弹出。
队列:先进先出,append() 将元素放入队列,调用 pop() 会将第一个元素(list.pop(0))弹出。

4.3 字典

4.3.1 访问

###1. 创建
dict1 = {}  # 创建空字典
dict1 = {'a': 'apple', 'A': 'banana'}  # 冒号连接key值和value值
dict1 = {1:'a', 2: 'b'}  #数字可作为索引值进行访问

###2.访问
dict1 = {'a': 'apple', 'A': 'banana'}
print(dict1)  # 输出字典
print(dict1['a'])  # 输出a对应的value
print(dict1['A'])  # 输出A对应的value,字典中的key区分大小写

### get()方法:D.get(k [,d])
### get()相当于一条if...else语句,当k在字典中时,返回值D[k],当k不在字典中时,返回d,d默认None
dict1 = {'a': 'apple', 'b': 'banana', 'c': 'cat'}
print(dict1.get('z', 'bar'))
print(dict1.get('a', 'bar'))

4.3.2 增删改查

###3.添加、删除与修改操作
dict1 = {'a': 'apple', 'b': 'banana', 'c': 'cat'}
dict2 = {'s':'small', 'b':'big'}
dict1.setdefault('d', 'dog')  # 添加元素
dict1.update(dict2)   #将dict2合并到dict1,其中dict2键b的值会覆盖dict1键b的值
del(dict1['a'])  	# 删除键a对应的值
dict1['c'] = 'car'  # 更改键c的值
print( dict1.pop('b'))   # 弹出b对应的值 big 
print(dict1)  #输出字典
dict1.clear()  #清空字典
print(dict1)  #输出字典,输出为 {}

4.3.3 遍历

###4.遍历
#for...in
dict1 = {'a': 'apple', 'b': 'banana', 'c': 'cat'}
for k in dict1:
print ('dict[%s] = ' % k, dict1[k])
#items(),其输出结果为元组
dict1 = {'a': 'apple', 'b': 'banana', 'c': 'cat'}
for k,v in dict1.items():
print ('dict[%s] = ' % k, v)

4.3.4 混合型输出

###5.混合型字典的输出
dict1 = {'a': ('apple',), 'b': ['banana', 'bag'], 'ca': {'z': 'cat', 'y': 'car'}}
print(dict1['a'])   # 输出元组
print(dict1['a'][0])  # 访问元组第一个元素,输出 apple
print(dict1['b'])     # 输出列表
print(dict1['b'][0])  # 输出 banana
print(dict1['ca'])    # 输出键ca对应的value字典
print(dict1['ca']['z'])  #输出键z对应的cat

4.3.5 keys()方法和values()方法

dict1 = {'a': 'apple', 'b': 'banana', 'c': 'cat'}
# 输出key值
print(dict1.keys())  # 输出 ['a', 'b', 'c']
# 输出value值
print(dict1.values())  # 输出['apple', 'banana', 'cat']

4.3.6 排序和复制

1. 排序

dict1 = {'a': 'apple', 'b': 'little', 'c': 'big'}
print(sorted(dict1.items(), key=lambda d: d[0]))  # d[0]表示按key值排序
print(sorted(dict1.items(), key=lambda d: d[1]))  # d[1]表示按value值排序

输出

[('a', 'apple'), ('b', 'little'), ('c', 'big')]
[('a', 'apple'), ('c', 'big'), ('b', 'little')]

2.复制

###copy()浅拷贝,将字典A复制到B,并删除B原有元素,当对B进行增删改查的时,A的数据也会发生变化
import copy
dict1 = {'a': 'apple', 'b': 'banana', 'c': 'cat'}
dict2 = {'s':'small', 'b':'big'}
dict2 = dict1.copy()  # 拷贝dict1并赋给dict2
print(dict2)
###deepcopy深拷贝,相当于C语言的指针,字典B的改变不会影响到A
import copy
dict1 = {'a': 'apple', 'b': 'banana', 'c': 'cat'}
dict2 = {'s':'small', 'b':'big'}
dict2 = dict1.deepcopy()  # 拷贝dict1并赋给dict2
print(dict2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值