容器型数据类型
1、列表相关操作
- 加法和乘法运算
'''
列表1 + 列表2 - 将两个列表合并产生一个新的列表(新列表中的元素,是两列表所有的元素)
列表先后决定内部元素先后排列顺序,
列表 * N - 将列表中的元素重复N次,产生一个新的列表;新列表中的
元素排列顺序和前列表一样
'''
- in 和 not in (判断结果为布尔值)
数据 in 列表 —— 判断列表中是否存在直到数据对应的元素
数据 not in 列表 —— 判断列表中是否不存在直到数据对应的元素
**练习:**已知一个列表保存了多个学生的姓名,要求去掉列表中重复的名字
names = ['小明', '张三', '李四', '张三', '张三', '小明', '王五', '王五']
names1 = []
for x in names:
if x not in names1:
names1.append(x)
print(names1) # ['小明', '张三', '李四', '王五']
- 相关函数
1)max(列表)、min(列表)
2)sorted(列表) - 将列表中的元素从小到大排序,产生一个新的列表;
sorted(列表,reverse = True) - 将列表中的元素从大到小排序,产生一个新的列表3)len (列表) - 获取列表长度(列表中元素的个数)
4) list(数据) - 将指定的数据转换成列表(这儿的数据必须是序列
**注意:**所有的序列都可以转换成列表,转换成列表的时候,序列中的元素,就是列表中的元素;
案例
list1 = [21,45,95,206,548,12,0]
new_list = sorted(list)
print(new_list) # [0, 12, 21, 45, 95, 206, 548]
list1 = [21,45,95,206,548,12,0]
new_list = sorted(list,reverse=True)
print(new_list) # [548, 206, 95, 45, 21, 12, 0]
print(list('abc')) #['a' , 'b' ,'c',]
print(list(range(8)))
2、字典
- 字典存在的价值:键是对值的解释说明及区分
需求:定义一个变量保存一个学生的信息
stu1 = ['张三',25,'男',170,89,] #['张三', 25, '男', 170, 89]
print(stu1)
stu2 = {'name':'张三','age':25,'性别':'男'} #{'name': '张三', 'age': 25, '性别': '男'}
print(stu2)
字典与列表的区别:保存多个数据时,如果多个数据的意义不相同,用字典;反之用列表
- 什么时字典(dict) —— 字典的键值对 成对出现
'''
容器:将{ }作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是一个元素)
{键1:值1,键2:值2}
字典是可变(支持增删改);字典无序 — 控制的是数据的意义(不支持下标操作)顺序不影响结果
键的要求: 1)、不可变类型的数据才能作为字典的键 (数字、字符串、布尔、空值、元组),
2)、一般用于字符串作为字典键
3)、键是唯一
值的要求:没有要求,任何数据类型(可重复)
'''
- 空字典 —— { }
注意:字典的键必须是不可变类型的数据;键是唯一的;字典无序
3、字典的基本操作
字典保存数据,真正想要保存的是值,键是对值来进行区分说明的;
-
查单个 —— 获取字典的一个值
''' a、字典【键】 — 获取字典中指定键对应值,如果键不存在,报错 b、字典 . get(键) — 获取字典中指定键对应值,如果键不存在,不会报错,并且返回None 空值 c、字典 . get(键,默认值) — 如果键不存在,不会报错,并且返回默认值 '''
**注意:**三种方法,键存在的时候,表达的意义是一样的,只有当键不存在的时候,一种报错,一种返回空值,一种返回默认值
案例1
students = [ {'name':'小明','age':18,'score':59}, {'name':'stu2','age':18,'score':79}, {'name':'小','age':18,'score':59}, {'name':'小2明','age':18,} ] sum1 = 0 for x in students: sum1 += x.get('score',0 ) print('总分:',sum1) # 总分:197
案例2
class1 = { 'name': 'python2302', 'address': '11教', 'teacher': {'name': '余婷', 'age': 18, 'gender': '女', 'qq': '726550822'}, 'header_teacher': {'name': '舒玲', 'age': 18, 'gender': '女', 'tel': '110'}, 'students': [ {'name': 'stu1', 'age': 19, 'gender': '男', 'link_man': {'name': '张三', 'tel': '120'}}, {'name': 'stu2', 'age': 16, 'gender': '女', 'link_man': {'name': '李四', 'tel': '119'}}, {'name': 'stu3', 'age': 22, 'gender': '女', 'link_man': {'name': '老王', 'tel': '234'}}, {'name': 'stu4', 'age': 17, 'gender': '男', 'link_man': {'name': '赵六', 'tel': '2112'}}, {'name': 'stu5', 'age': 29, 'gender': '男', 'link_man': {'name': '邓七', 'tel': '5482'}}, {'name': 'stu6', 'age': 25, 'gender': '女', 'link_man': {'name': '王八', 'tel': '9223'}} ] } # 1)打印班级名称 print(class1['name']) # 2)打印讲师的名字和qq print(class1['teacher']['name'],class1['teacher']['qq']) # 3)打印班主任的电话 print(class['header_teacher']['name']) # 4)打印所有学生的名字 name1 = class1['students'] for x in name1: print(x.get('name')) # 5)打印所有未成年学生的名字和性别 for x in class1['students']: if x.get('age') < 18 : print(x.get('name'),x.get('gender')) # 6)打印所有学生的联系人的名字 for x in class1['students']: print(x['link_man']['name']) # 7)计算所有男生的平均年龄 total_age = count = 0 student = class1['students'] for stu in student: if stu['gender']=='男生': total_age += stu['age'] count +=1 print(int(total_age / count))
-
增、改
字典[键] = 值
如果字典中,键不存在,就是添加键值对,反之就是修改指点键对应的值
字典. setdefault(键,值) - 在字典中添加指定键值对(键如果存在不会修改键对应的值)
-
删 - 删除键值对
del 字典 【键】 - 删除字典中指定键对应的键值对
字典. pop(键) - 取走字典中指定键对应的值
4、字符串和元组
- 字符串
'''
容器:将 "" 或者 ' ' 作为容器的标志,里面的每一个符号就是字符串中的每个元素
字符串是不可变的;字符串是有序的(支持下标操作)
元素:字符串的元素又叫字符,分为普通字符和转义字符两种
\n - 换行
\t - 水平制表符(tab键)
'''
字符串获取元素的方法和列表一样
元组 : 就是不可变的列表 - (元素1,元素2,元素3.。。。) 列表所有的查操作都支持
print('adv\nadfa')
print('\tadf\n adfa')