容器型数据类型
一、列表
-
什么是列表(
list
)列表是容器型数据类型,将
[]
作为容器的标志,里面多个元素用逗号,
隔开:[数据1,数据2,数据3,...]
列表是可变的(元素的个数和元素的值可变 - 支持[增删改查 - 只在可变数据类型中可以执行])
列表是有序的(顺序影响结果,支持下标/索引操作)
列表的元素(保存在列表中的每个数据):可以任何类型的数据
# 有序性 print([10, 20, 30] == [20, 10, 30]) # False print('abc' == 'bac') # False # 字典和集合无序 print({'a': 10, 'b': 20} == {'b': 10, 'a': 20}) # True print({10, 20, 30} == {20, 10, 30}) # True # 空列表 list = [] # 列表中的元素可以是任何数据类型的数据 list2 = [10, 1.2, 'abc', True, [10, 20]] # 表示一个比较长的列表的时候,可以在逗号后面换行 list3 = [ ['魈', '男', '璃月'], ['万叶', '男', '稻妻'], ['散兵', '男', '稻妻'] ]
-
列表的增删改查
-
查 - 获取列表中的元素
查单个 - 一次获取一个元素
语法:
列表[下标]
说明:
列表 - 具体的一个列表,或者是保存列表的变量 [] - 固定写法 下标 - 又叫索引,指的是元素在列表中的位置信息。Python中有序序列每个元素的下标有两个,从前往后从0开始step为1的下标和从后往前从-1开始step为-1的下标。
nums = [10, 20, 30, 40, 50] print(nums[1], nums[-4]) # 20, 20 print(nums[5]) # IndexError: list index out of range(索引错误)
遍历 - 按顺序一个一个的获取列表中所有的元素
names =['魈','万叶','散兵','钟离'] # 练习:统计nums中偶数的个数 nums = [46, 55, 80, 89, 71, 20] for i in nums: if i % 2 == 0: print(i) # 练习2:打印persons中每个人的名字 persons = [ ['魈', '男', '璃月'], ['万叶', '男', '稻妻'], ['散兵', '男', '稻妻'] ] for i in persons: print(i[0])
-
增 - 在列表中添加元素
列表.append()
语法:
列表.append(元素) - 在指定列表的最后添加指定元素
names =['魈','万叶','散兵','钟离'] names.append('温迪') print(names) # ['魈', '万叶', '散兵', '钟离', '温迪'] # 案例:提取nums中所有的偶数,得到新的列表 n = [] nums = [46, 55, 80, 89, 71, 20] for i in nums: if i % 2 == 0: n.append(i) print(n) # [46, 80, 20]
列表.insert()
语法
列表.insert(下标,元素) - 将指定元素插入到列表中指定下标对应的元素的前面
names =['魈','万叶','散兵','钟离'] names.insert(-1,'温迪') print(names) # ['魈', '万叶', '散兵', '温迪', '钟离']
-
删 - 删除元素
del 列表[下标] - 删除列表中指定下标对应的元素
names =['魈','万叶','散兵','钟离'] del names[2] print(names) # ['魈', '万叶', '钟离']
列表.remove(元素) - 删除列表中第一个指定的元素,若该元素不存在,则报错
names =['魈','万叶','魈','散兵','钟离'] names.remove('魈') # 列表中有多个指定删除的元素时,默认删除第一个 print(names) # ['万叶', '魈', '散兵', '钟离']
列表.pop(下标) - 取走列表中指定下标对应的元素并且返回
names =['魈','万叶','魈','散兵','钟离'] result = names.pop() # 默认删除最后一个 print(result) # 钟离 print(names,result) # ['魈', '万叶', '魈', '散兵'] 钟离 names =['魈','万叶','魈','散兵','钟离'] result = names.pop(1) print(result) # 万叶 print(names,result) # ['魈', '魈', '散兵', '钟离'] 万叶
-
改 - 修改某个元素的值
列表[下标] = 新值 - 将指定下标对应元素修改成新的值
names =['魈','万叶','魈','散兵','钟离'] names[-3] = '魈宝' print(names) # ['魈', '万叶', '魈宝', '散兵', '钟离']
-
-
相关操作和相关函数
-
列表的加法和乘法运算
nums = [10, 20, 30] result = nums + [22, 23] print(result) # [10, 20, 30, 22, 23] result = nums * 3 print(result) # [10, 20, 30, 10, 20, 30, 10, 20, 30]
-
in
和not in
- 判断数据 in 列表 - 判断列表中是否存在指定数据对应的元素 数据 not in 列表 - 判断列表中是否不存在指定数据对应的元素
names = ['魈', '万叶', '魈宝', '散兵', '钟离'] print('魈宝') # True
-
len
函数 - 求元素个数len(列表) - 获取列表的长度(获取列表中元素的个数) names = ['魈', '万叶', '魈宝', '散兵', '钟离'] print(len(names)) # 5
-
sum
函数 - 求和sum(列表) - 求列表中所有元素的和(列表中的元素必须全部是数字) scores = [12, 456, 75, 5.67] print(sum(scores)) # 548.67
-
max/min
函数 - 求最大/最小值scores = [12, 456, 75, 5.67] print(max(scores)) # 456 print(min(scores)) # 5.67
-
sorted
函数 - 排序变量 = sorted(list) - 将列表中的元素从小到大排序(升序)产生一个新的列表保存到指定的变量中 变量 = sorted(list, reverse = True) - 将列表中的元素从大到小排序(降序)产生一个新的列表保存到指定的变量中 scores = [12, 456, 75, 5.67] new_scores = sorted(scores) print(new_scores) # [5.67, 12, 75, 456] new2_scores = sorted(scores, reverse = True) print(new2_scores) # [456, 75, 12, 5.67]
-
二、字典
-
什么是字典(
dict
)字典是容器型数据类型;将
{}
作为容器的标志,里面多个键值对用逗号,
隔开:{键1:值1, 键2:值3, 键3:值3,...}
字典是可变的(支持增删改查);字典是无序的(顺序不影响结果,不支持下标操作)
# 无序 print({'胡桃':16, '万叶':17} == {'万叶':17, '胡桃':16}) # True
字典的元素:
必须是键值对
键必须是不可变类型的数据(数字、布尔、空值、字符串、元组,一般用字符串)
案例:定义一个变量保存一个人的信息 person = ['魈', '男', '璃月', '仙人'] person = {'name':'魈', 'gender':'男', 'country':'璃月', 'status':'仙人'} dict = {'name':'魈', 'gender':'男', (1, 2):'数字'}
空字典
dict1 = {}
值可以是任何类型的数据
-
查操作 - 获取值
字典[键] - 获取字典中指定键对应的值,若键不存在则报错
person = {'name':'魈', 'gender':'男', 'country':'璃月', 'status':'仙人'} print(person['name']) # 魈 print(person['firends']) # KeyError: 'firends'
字典.get(键,默认值) - 获取字典中指定键对应的值,若键不存在则返回默认值,没有默认值返回
None
print(person.get('country')) # 璃月 print(person.get('firends')) # None print(person.get('firends',0)) # 0 print(person.get('country',1)) # 璃月
-
实际生活中的字典
案例:定义一个变量保存一个班级的信息
班级信息包括:班级名称、位置、讲师、班主任、所有学生 class1 = { 'name':'Python2206', 'address':'14教室', 'lecturer':{ 'name':'余婷', 'age':18, 'qq':'3425435438'}, 'class_teacher':{ 'name':'吴静', 'age':18, 'tel':'3654578788' }, 'all_student':[ { 'name':'stu1','age':18, 'gender':'男','tel':'13214345','linkman':{ 'name':'fa1','tel':'111111111' } }, { 'name':'stu2','age':21, 'gender':'男','tel':'13214345','linkman':{ 'name':'fa2','tel':'111111111' } }, { 'name':'stu3','age':17, 'gender':'女','tel':'132547655','linkman':{ 'name':'fa3','tel':'111111112' } }, { 'name':'stu4','age':19, 'gender':'女','tel':'1321457688','linkman':{ 'name':'fa4','tel':'111111113' } }, { 'name':'stu5','age':20, 'gender':'男','tel':'1321434577','linkman':{ 'name':'fa5','tel':'111111114' } } ] } # 1)获取班级名称 print(class1['name']) # 2)打印讲师的名字 print(class1['lecturer']['name']) # 3)打印班主任的电话 print(class1['class_teacher']['tel']) print('-----------------------------------------------') # print(class1[('all_student')]) # 4)打印所有学生的名字 for i in class1[('all_student')]: print(i['name']) print('-----------------------------------------------') # 5)打印所有女同学的名字和电话 for i in class1[('all_student')]: if i.get('gender') == '女': print(i['name'],i['tel']) print('-----------------------------------------------') # 6)打印所有男生的联系人名字 for i in class1[('all_student')]: if i['gender'] == '男': print(i['linkman']['name'])
三、字符串
-
认识字符串(
str
)字符串是容器型数据类型;将单引号或者双引号作为容器的标志,引号中的每个符号就是字符串的元素(字符串的元素又叫字符)
-
转义字符 - 在特定的符号前加’'来表示特殊意义或者特殊功能的符号
''' 常见的转义字符: \n : 换行 \t : 水平制表符(按一个tab键) \' : 表示一个普通的单引号 \" : 表示一个普通的双引号 \\ : 表示一个普通的反斜杠 注意:计算字符串长度的时候,一个转义字符的长度是1 ''' str1 = 'abcn123' print(str1) # abcn123 str2 = 'It's me.' # 报错 str3 = 'It\'s me.' str4 = "It's me." str5 = 'abc\\n123' # abc\n123
-
字符串的相关操作
print('abc' + 'Hello') # 'abcHello' print('abc' * 3) # 'abcabcabc' print('a' in 'abcjih') # True print('abc' in 'abcjih') # True print('acb' in 'abcjih') # False
-
格式字符串 - (
f-string
)name = input('请输入学生的名字:') age = int(input('请输入学生的年龄:')) # message : 'xxx今年xx岁!' message = name + '今年' + str(age) + '岁!' print(message) message2 = f'{name}今年{str(age)}岁!' print(message2) # xiao今年13岁!