数据结构
一.列表
##列表是由一些元素按一定顺序进行排列而成,由中括号括起来,里面元素可以使任何类型
1.列表的创建
1 list=[1,2,a,b,[1,2],{'name':'chensir','age':18}]
2.列表的增删改查
1 增: 2 list = [1, 2, 3, 'chensir', 'apple'] 3 #append 追加 4 list.append({'age': 18}) 5 print(list) 6 ##[1, 2, 3, 'chensir', 'apple', {'age': 18}] 7 #insert 指定位置插入 8 list.insert( 4,'456') 9 print(list) 10 ##[1, 2, 3, 'chensir', '456', 'apple'] 11 #extend 迭代追加 12 list.extend('banana') 13 print(list) 14 ##[1, 2, 3, 'chensir', 'apple', 'b', 'a', 'n', 'a', 'n', 'a']
list1=['博客园','CSDN','github',] #删 #pop 按照索引去删 list1.pop(1) print(list1) ##['博客园', 'github'] #remove 按照元素去删 list1.remove('博客园') print(list1) ## ['CSDN', 'github'] #clear 全部清空 list1.clear() print(list1) ##[] #del 按照索引删去 list1=['博客园','CSDN','github','微信','QQ'] # 按照索引 del list1[1] print(list1) del list1[2] print(list1) ##['博客园', 'github', '微信', 'QQ'] ##['博客园', 'github', 'QQ'] # 按照切片 del list1[0:2] print(list1) ##['github', '微信', 'QQ'] del list1[:4] 注意:左闭右开区间 print(list1) ##['QQ'] # 按照切片+步长 del list1[0:3:2] print(list1)
# 改 l1=['chensir','apple','a','b','c'] # 按照索引改 l1[-1]='Lisir' print(l1) ##['Lisir', 'apple', 'a', 'b', 'c'] # 按照切片 l1[0:4]='666' print(l1) l1[-1:-3]='999' print(l1) ##['6', '6', '6', '9', '9', '9', 'Lisir'] # 按照切片+步长 l1=['chensir','apple','a','b','c'] l1[0:4:2]=[1,2] print(l1) ##[1, 'apple', 2, 'b', 'c']
# 查 l1=['chensir','apple','a','b','c'] # 索引 # 切片 # 步长 #for循环遍历列表
for i in l1: print(i)
3.列表的嵌套
# l3 = ['alex', 'wusir', ['taibai', 99, 'ritian'], 20] # 1.找到alex的e元素。 l1=l3[0][2] print(l1) # 2. 将wusir变成大写。 l3[1].upper() print(l3[1].upper()) # 3.给此列表['taibai',99,'ritian'] 追加一个元素,'文周' 方法一: l1=l3[2] l1.append('文周') l3[2]=l1 print(l3) 方法二: l3[2].append('文周') print(l3) # 4.将 'taibai' 首字母大写。 方法一: l1=l3[2][0] l2=l1.capitalize() l3[2][0]=l2 print(l3) 方法二: l3[2][0]=l3[2][0].capitalize() print(l3) # 5.将 99 通过数字加1 的方式变成100,并放回原处。 l3[2][1]=l3[2][1]+1 print(l3)
二.字典
#字典是由一系列的键值对组合而成的数据结构,并且每个键对应一个值,键是不可重复的。
1.字典的创建
#第一种方法: list=[1,2,a,b,[1,2],{'name':'chensir','age':18}] #第二种方法: # fromkeys() dic11=dict.fromkeys([1,2,3],"cxt") print( dicl1) #{1: 'cxt', 2: 'cxt', 3: 'cxt'} #第三种方法: dic=dict(name='chensir',age='18',sex='nv') print(dic) #{'name': 'chensir', 'age': '18', 'sex': 'nv'}
2.字典的增删改查
# 增: dic={'name':'chensir','age':18,'sex':'女'} # 第一种方法:有此key就改,没有此key就添加 dic['name1']='lisir' print(dic) #{'name': 'chensir', 'age': 18, 'sex': '女', 'name1': 'lisir'} #第二种方法: # setdefault 有此key则不做任何操作但会返回对应的值,无此key则添加 dic.setdefault('name') print(dic) dic.setdefault('班级','计算机八班') print(dic) #{'name': 'chensir', 'age': 18, 'sex': '女'} # {'name': 'chensir', 'age': 18, 'sex': '女', '班级': '计算机八班'}
# 删 #pop # 一.pop删除键值对,也有返回值,如果没有此键,并且设置了第二个参数,则不会报错,并且返回第二个参数。 dic={'name':'chensir','age':18,'sex':'女'} dic.pop('name') print(dic) # {'age': 18, 'sex': '女'} # clear()清空 dic.clear() print(dic) # {} # popitem 3.5之前随即删除某个键值对,3.6之后,删除最后一组键值对。有返回值。 dic={'name':'chensir','age':18,'sex':'女'} dic.popitem() print(dic) #{'name': 'chensir', 'age': 18} # del 按照键删除键值对 dic={'name':'chensir','age':18,'sex':'女'} del dic['sex'] print(dic) # {'name': 'chensir', 'age': 18}
# 改: # 第一种方法: dic={'name':'chensir','age':18,'sex':'女'} dic['name']='lisir' print(dic) # {'name': 'lisir', 'age': 18, 'sex': '女'} # 第二种方法:两个字典update dic = {"name":"jin","age":18,"sex":"male"} dic2 = {"name1":"alex","weight":75} dic.update(dic2) #将dic2的键值对添加对dic1中 print(dic) # {'name': 'jin', 'age': 18, 'sex': 'male', 'name1': 'alex', 'weight': 75} dic = {"name":"jin","age":18,"sex":"male"} dic.update(name1='陈',aaa='邓') print(dic) # {'name': 'jin', 'age': 18, 'sex': 'male', 'name1': '陈', 'aaa': '邓'}
# 查 # 第一种方法:dict[key] key不存在时会报keyvalue异常 dic={'name':'chensir','age':18,'sex':'女'} print(dic['name']) # chensir # 第二种方法:get()函数 print(dic.get('age')) #18
3.字典的嵌套
dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'],
1: {'name': 'taibai', 'age': 18, 'sex': '男'},
(1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]
}
1.给 name_list对应的列表追加一个值: 司徒大人.
dic['name_list'].append('司徒大人')
print(dic)
2.将name_list对应的alex 变成全部大写.
dic['name_list'][1]=dic['name_list'][1].upper()
print(dic)
3. 将1对应的字典添加一个键值对: weight : 75
dic[1].setdefault('weight',75)
print(dic)
4.将1 对应的字典的name键对应的名字taibai 换成alex
dic[1]['name']='alex'
print(dic)
5.将 {'ip': '192.168.1.1', 'port': 3306} 此字典的port键值对删除.
dic[(1, 2)][1].pop('port')
print(dic)
4.字典的常见其他操作
| 序号 | 函数 | 描述 |
| 1 | len() | 计算字典的元素个数,即键的总数 |
| 2 | str() | 输出字典可打印的字符串表示 |
| 3 | dict.keys() | 以列表返回一个字典的所有键 |
| 5 | dict.values() | 以列表返回字典中的所有值 |
| 6 | dict.items() | 以列表返回一个可遍历的(键,值)元组数组 |
dic={'A':1,'B':2,'C':3,'D':4,'E':5}
for i in dic.keys():
print(i)
# A
# B
# C
# D
# E
for i in dic.values():
print(i)
# 1
# 2
# 3
# 4
# 5
for i in dic.items():
print(i,type(i))
# ('A', 1) <class 'tuple'>
# ('B', 2) <class 'tuple'>
# ('C', 3) <class 'tuple'>
# ('D', 4) <class 'tuple'>
# ('E', 5) <class 'tuple'>
三.元组
元组和列表非常的相似,由一系列元素按顺序进行排列而成的容器。
1.元组的创建
tuple=(1,2,3,4,5,6) #直接使用圆括号将所有元素包围起来
2.元祖的增删改查
tuple=(1,2,3,4,5,6) print(tuple[1]) #查 tuple[1]=0 print(tuple) ##报这样的错误: tuple[1]=0 #TypeError: 'tuple' object does not support item assignment 注意:元祖是不可以改变的,所以对元祖进行增删改也是不允许的,但是可以对元组的子内容进行修改。 tuple=(1,2,3,[1,2,3],4) tuple[3][1]=4 print(tuple) #(1, 2, 3, [1, 4, 3], 4)
四.集合
集合是无序的不重复元素序列
1.集合的创建
set={'name','age','sex'}
使用{}括号直接创建,创建完成后,集合会去重,只留第一个。
2.集合的增删改查
# 增 # ipdate 往集合中添加元素 set={'apple','1','2'} set.update('3') print(set) # {'2', '1', '3', 'apple'} # 删 set={'apple','1','2','4','5'} #remove # set.remove('apple') #如果元素不存在会报错 # print(set) # set.remove('6') # print(set) # set.remove('6') # KeyError: '6' #discard #如果元素不存在也不会报错 # set.discard('apple') # print(set) #{'2', '5', '4', '1'} set.discard('6') print(set) #pop #用于从集合中随机删除元素,和列表字典的pop不一样。 set.pop() print(set) # {'4', '5', 'apple', '2'} set.pop() print(set) #{'5', 'apple', '2'} #clear set.clear() print(set) #set()
改:
集合是无序的,因此集合没有索引,所以不嫩修改。
查:
同上,没有顺序,也没有索引,所以集合也不能查询
3.集合的运算
# 求合集 将两个集合进行合并 set1={'apple','xiaomi'} set2={'huawei','rongyao'} set1.union(set2) print(set1.union(set2)) #{'huawei', 'rongyao', 'apple', 'xiaomi'} # 求差集 存在集合A但是不存在集合B print(set1.difference(set2)) #{'apple'} # 求交集 存在集合A并且存在集合B print(set1.difference(set2)) # {'apple'}
4.集合的判断
# 判断是否有某元素 set1={'apple','xiaomi'} print('apple' in set1) #True # 判断两集合是否有相同元素 set1={'apple','xiaomi'} set2={'huawei','rongyao'} print(set1.isdisjoint(set2)) # True #判断是否有子集 set1={'apple','xiaomi'} set2={'huawei','rongyao'} print(set1.issubset(set2)) # False

浙公网安备 33010602011771号