前言
列表、元组、字典、集合
文章目录
1.列表
列表是包含若干元素的有序序列,列表中的元素都放在一对中括号中,使用逗号进行分割。列表中的元素可以是任意合法的数据类型,可以同时包含不同类型的数据。
1创建列表
使用中括号直接进行创建
使用list()函数直接进行创建,可以将一个数据结构之间转换成列表类型
创建时可以直接加入列表元素也可以创建空的列表
使用del命令进行列表的删除
score_list1 = []
score_list2 = [90,85,70]
score_list3 = list()
score_list4 = list('string to list')
print(score_list1)
print(score_list2)
print(score_list3)
print(score_list4)
运行结果:
[]
[90, 85, 70]
[]
['s', 't', 'r', 'i', 'n', 'g', ' ', 't', 'o', ' ', 'l', 'i', 's', 't']
1列表的访问
使用"列表对象[下标]"方式提取指定的多个列表元素
使用”切片“的方式提取指定的多个列表元素
list_name[start🔚step]左闭右开
start默认从0开始,step默认从1开始
score_list = [80,90,70,65,85,45]
print(score_list[0])
print(score_list[-1])
score_list2 = [30,40,50,60,70,80,90,95,100]
print(score_list2[2:5])
print(score_list2[2:8:2])
print(score_list2[-1:-3:-1])
print(score_list2[::2])
运行结果
80
45
[50, 60, 70]
[50, 70, 90]
[100, 95]
[30, 50, 70, 90, 100]
2列表的添加
append(x):将元素x添加到列表的末尾
extend(list):将列表添加到列表的末尾
insert(index,x):将元素x插入到index指定的下标位置,原来该位置及其之后的元素都后移一个位置
3列表的修改
直接给元素赋值即可实现对元素的修改
4删除列表元素
1.del语句删除指定位置的元素
2.列表的pop()方法删除指定位置的元素并获取该元素
3.列表的remove(元素值)方法根据指定的元素值将列表中第一次出现的该元素删除
举例:
1.输入某个班级的课程成绩
2.输出第一个学生和最后一个学生的成绩
3.修改第4个学生的成绩
4.删除第6个学生的成绩
5.取出前5个和后5个学生的成绩,存在不同的表下
6.按成绩降序排序
7.查找85分在本班的排名
8.求最高成绩和最低成绩
9.求平均成绩
10程序结束前,释放内存空间
score_list = []
print("输入学生的成绩,用空格进行分割,以回车键结束")
score_str = input()
temp = score_str.split(' ')
for str in temp:
score_list.append(int(str))
print('成绩列表',score_list)
print(score_list[0],score_list[-1])
score_list[3] = 98
del score_list[5]
print(score_list)
score_top5 = score_list[:5]
print(score_top5)
score_last5 = score_list[-1:-6:-1]
print(score_last5)
score_list.sort(reverse=True)
print("降序",score_list)
print("85的排名",score_list.index(85)+1)
print("最高分",max(score_list),"最低分",min(score_list))
score_avg = sum(score_list)/len(score_list)
print("平均成绩",score_avg)
运行结果
输入学生的成绩,用空格进行分割,以回车键结束
90 80 70 60 50 65 75 85 95 100
成绩列表 [90, 80, 70, 60, 50, 65, 75, 85, 95, 100]
90 100
[90, 80, 70, 98, 50, 75, 85, 95, 100]
[90, 80, 70, 98, 50]
[100, 95, 85, 75, 50]
降序 [100, 98, 95, 90, 85, 80, 75, 70, 50]
85的排名 5
最高分 100 最低分 50
平均成绩 82.55555555555556
2.元组
元组中的元素都防止在一对小括号中(),使用逗号进行分割,元素可以时任意类型,是有序序列,可以使用索引号进行访问元素
元组是不可变序列,一旦创建就不能改变元组中的元素,不能对元组元素进行添加、修改、删除等
1.元组的创建和删除
1.使用圆括号进行创建
2.使用truple()函数创建:先创建一个列表,将列表转换成元组
可以创建空的元组,创建时可以直接接入元组元素
当只有一个元素时,元素后面也要逗号
省略圆括号时,系统会将用逗号分割的数据序列转换成元组
使用del语句将整个元组删除
course_trplel = ('os','data structure','computer Net','java')
print(course_trplel)
coures_no_tuple='050501','080502','050503'
print(coures_no_tuple)
tupl = (50,)
print(tupl)
temp_list = ['050501','080502','050503']
temp = tuple(temp_list)
print(temp)
运行结果
('os', 'data structure', 'computer Net', 'java')
('050501', '080502', '050503')
(50,)
('050501', '080502', '050503')
2.访问元组的元素
使用索引号(下标)提取元素的值
使用切片操作提取元素
3.元组的高级操作
举例:
1.创建一个列表,输入多门专业课的基础课程
2.使用tuple()函数将列表转换成元组
3.使用下标访问第2门课和最后一门
4.使用元组的内置函数len()求课程门数
temp_str = input("请输入课程名称,使用逗号分割")
coure_list = temp_str.split(',')
print(coure_list)
coure_tuple = tuple(coure_list)
print(coure_tuple)
print("第2门课程",coure_tuple[1])
print("最后一门课程",coure_tuple[-1])
course_num = len(coure_tuple)
print("课程数",course_num)
运行结果:
请输入课程名称,使用逗号分割操作系统,计算机网络,java,数据结构,数据库
['操作系统', '计算机网络', 'java', '数据结构', '数据库']
('操作系统', '计算机网络', 'java', '数据结构', '数据库')
第2门课程 计算机网络
最后一门课程 数据库
课程数 5
3.字典
字典时映射类型的数据结构,字典中的元素都放在一对大括号中{},元素之间使用逗号分割。每个元素都是键值对(key:value)
字典中的元素是无序的,通过键访问对应的元素,字典中的键是唯一的不允许重复,但是值是可以重复的。
字典中的键可以是任意不可变类型:整数、实数、字符串、元组等
1.创建字典
1.使用大括号直接创建
2.使用dict()函数创建字典,使用赋值好号 = 将键和值进行连接
使用dict()函数将给定的多个双值序列转换成字典
使用del语句删除字典
dict1 = {'wangming':'454545','liuming':'121212','wenxin':'45454545'}
print(dict1)
dict2 = dict(wang='4545455',jsdh='45454554')
print(dict2)
dict3 = dict([('wanghu','12122'),('age',30),('name','sdjshj'),'BD'])
print(dict3)
运行结果
{'wangming': '454545', 'liuming': '121212', 'wenxin': '45454545'}
{'wang': '4545455', 'jsdh': '45454554'}
{'wanghu': '12122', 'age': 30, 'name': 'sdjshj', 'B': 'D'}
2.字典的基本操作
使用键作为下标提取指定的键值
当提取的键在字典中不存在的时,会抛出异常,为避免这种异常使用in语句判断一下键值是否存在
使用指定的键作为下标给字典中的元素赋值
当需要将一个字典中的所有的元素添加到另一个字典中时,可以使用update方法进行字典合并,若有键相同,则会被覆盖
使用del语句删除字典中的元素
使用字典的pop()方法获取元素的键值并删除该元素
使用clear()清除字典中所有的元素
dict1 = {'wangming':'454545','liuming':'121212','wenxin':'45454545'}
print(dict1['liuming'])
print('kai tao' in dict1)
dict1['qiu yan'] = '45454'
print(dict1)
dict_a = {'china':'beijing','usa':'washington'}
dict_b = {'birthain':'london','japan':'tokoyo'}
dict_a.update(dict_b)
print(dict_a)
dict_a['usa'] = 'sshdjs'
print(dict_a)
dict_a['french'] = 'newyork'
print(dict_a)
del dict_a['japan']
print(dict_a)
test = dict_a.pop('french')
print(test)
dict_a.clear()
print(dict_a)
运行结果
121212
False
{'wangming': '454545', 'liuming': '121212', 'wenxin': '45454545', 'qiu yan': '45454'}
{'china': 'beijing', 'usa': 'washington', 'birthain': 'london', 'japan': 'tokoyo'}
{'china': 'beijing', 'usa': 'sshdjs', 'birthain': 'london', 'japan': 'tokoyo'}
{'china': 'beijing', 'usa': 'sshdjs', 'birthain': 'london', 'japan': 'tokoyo', 'french': 'newyork'}
{'china': 'beijing', 'usa': 'sshdjs', 'birthain': 'london', 'french': 'newyork'}
newyork
{}
3.字典的高级操作
dict_a = {'Amercia':'washington','Birtain':'london','china':'beijing','japan':'tokyo'}
print(dict_a.keys())
print(dict_a.values())
print(dict_a.items())
print(len(dict_a))
运行结果
dict_keys(['Amercia', 'Birtain', 'china', 'japan'])
dict_values(['washington', 'london', 'beijing', 'tokyo'])
dict_items([('Amercia', 'washington'), ('Birtain', 'london'), ('china', 'beijing'), ('japan', 'tokyo')])
4
举例
1.创建字典 输入姓名和电话,输入姓名为空是借宿输入
2.输入一个新增的朋友的信息
3.查找某朋友的电话
4.修改电话
5.使用del语句进行删除
tel_book= {}
print("input name sand telephone_number,enter for end")
while True:
name = input('input name')
if name == '':
break
tel = input('input telephone_number')
tel_book[name] = tel
print('(1)',tel_book)
name= input('input name')
tel = input('input tel')
tel_book[name] = tel
print('(2)',tel_book)
name = input('input find name ')
if name in tel_book:
print('(3)',tel_book[name])
else:
print('no')
name = input('input name ')
if name in tel_book:
print(tel_book[name])
tel = input('input tel')
tel_book[name] = tel
else:
print('no exsist')
print('(4)',tel_book)
name = input('input name')
if name in tel_book:
del tel_book[name]
print('(5)',tel_book)
运行结果:
input name sand telephone_number,enter for end
input namewang
input telephone_number12
input nameliu
input telephone_number56
input name
(1) {'wang': '12', 'liu': '56'}
input nameji
input tel78
(2) {'wang': '12', 'liu': '56', 'ji': '78'}
input find name wang
(3) 12
input name liu
56
input tel89
(4) {'wang': '12', 'liu': '89', 'ji': '78'}
input nameji
(5) {'wang': '12', 'liu': '89'}
Process finished with exit code 0
4.集合
集合中的元素是无序的,并且集合中的元素是不可重复的,集合中的元素也是放在一对{}中,元素之间使用逗号分隔开
1.创建集合
1.使用{}直接进行创建
2.使用集合函数set创建,可以方便的将列表、元组等转换成集合,并将重复的元素只保留一个
使用add()函数可以将一个元素添加到集合中,如果存在则忽略
使用update()函数可以将一个集合中的元素合并到当前的集合中
使用remove()函数可以删除集合中的指定的元素,当元素不存在的时候会抛出异常
set1 = {20,40}
print(set1)
set2 = set([10,20,30,40,20])
print(set2)
set2.add(35)
print(set2)
set2.update({60,40})
print(set2)
set2.remove(40)
print(set2)
运行结果
{40, 20}
{40, 10, 20, 30}
{35, 40, 10, 20, 30}
{35, 40, 10, 20, 60, 30}
{35, 10, 20, 60, 30}
2.集合运算
与数学中的集合运算规则一致
set_a = {'peach','grape','pear','apple'}
set_b = {'watermelon','banana','peach','orange','apple'}
set_all= set_a | set_b
print(set_all)
set_public = set_a & set_b
print(set_public)
set_noa = set_b - set_a
print(set_noa)
set_nor = set_a ^ set_b
print(set_nor)
运行结果:
{'orange', 'banana', 'peach', 'grape', 'watermelon', 'apple', 'pear'}
{'peach', 'apple'}
{'watermelon', 'orange', 'banana'}
{'watermelon', 'orange', 'banana', 'pear', 'grape'}
举例:
30人
1.随机抽取10人
2.删掉一人 增加一人
import random
#创建空集合
num_set = set()
#随机生成工号30个,将其中10个添加到set中
while True:
num = random.randint(1,30)
num_set.add(num)
if len(num_set) == 10:
break
print('随机10人',num_set)
#输入删掉的工号
num = int(input('input num'))
#删除
num_set.remove(num)
while True:
num = random.randint(1,30)
num_set.add(num)
if len(num_set) == 10:
break
print('随机10人',num_set)
print('新增',num)
运行结果:
随机10人 {1, 2, 3, 9, 16, 18, 24, 25, 27, 29}
input num29
随机10人 {1, 2, 3, 6, 9, 16, 18, 24, 25, 27}
新增 6