数据结构

一.列表

##列表是由一些元素按一定顺序进行排列而成,由中括号括起来,里面元素可以使任何类型

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

 

posted @ 2021-11-30 22:25  abv.cxt。  阅读(37)  评论(0)    收藏  举报