赞
踩
数据容器就是一种可以存储多个元素的Python数据类型。
Python中的数据容器:
它们各有特点,但都满足可容纳多个元素的特性。
列表的定义语法:
[元素,元素,元素,...]
元素:数据容器内的每一份数据,都称之为元素。
元素的数据类型无限制,甚至元素可以是列表,这样就定义了嵌套列表。
列表的每个元素的编号称之为下标索引:
通过下标索引取出对应位置的元素:
下标索引的注意事项:
- # 定义一个列表
- my_list = ['zhangsan','lisi','ydh']
- # ['zhangsan', 'lisi', 'ydh']
- print(my_list)
- # <class 'list'>
- print(type(my_list))
-
- my_list = ['zhangsan',666,True]
- print(my_list)
- print(type(my_list))
-
- # 定义一个嵌套的列表
- my_list = [[1,2,3],[4,5,6]]
- # 取出嵌套列表中的元素
- # 5
- print(my_list[1][1])
-
- # 通过索引取数据
- my_list = ['tom','rose','jack']
- # 从前向后
- # tom
- print(my_list[0])
- # rose
- print(my_list[1])
- # 从后向前
- # jack
- print(my_list[-1])
- # rose
- print(my_list[-2])
-
- # list index out of range
- # print(my_list[3])
列表的常见方法:
列表的特点:
- my_list = ['ydh','yidaihao','python']
-
- # 1.index方法
- index = my_list.index('yidaihao')
- print(index)
-
- # index = my_list.index('hello')
- # # 'hello' is not in list
- # print(index)
-
- # 2.修改
- my_list[0] = 'zhangsan'
- print(my_list)
-
- # 3.insert方法
- my_list.insert(1,'lisi')
- # ['zhangsan', 'lisi', 'yidaihao', 'python']
- print(my_list)
-
- # 4.append方法
- my_list.append('best')
- # ['zhangsan', 'lisi', 'yidaihao', 'python', 'best']
- print(my_list)
-
- # 5.extend方法
- my_list2 = [1,2,3]
- # ['zhangsan', 'lisi', 'yidaihao', 'python', 'best', 1, 2, 3]
- my_list.extend(my_list2)
- print(my_list)
-
- # 6.del
- my_list = ['ydh','yidaihao','python']
- del my_list[2]
- print(my_list)
-
- # 7.pop方法
- my_list = ['ydh','yidaihao','python']
- element = my_list.pop(1)
- # yidaihao
- print(element)
- # ['ydh', 'python']
- print(my_list)
-
- # 8.remove方法
- my_list = ['ydh','yidaihao','ydh','python']
- my_list.remove('ydh')
- # ['yidaihao', 'ydh', 'python']
- print(my_list)
-
- # 9.clear方法
- my_list.clear()
- print(my_list)
-
- # 9.count方法
- my_list = ['ydh','yidaihao','ydh','python']
- count = my_list.count('ydh')
- print(count)
-
- # 10.len方法
- num = len(my_list)
- print(num)
将容器内的元素依次取出并处理,称之为遍历。使用while循环或者for循环遍历。
- list = ['张三丰','黄药师','郭靖','林冲']
- # while循环
- # i表示列表的下标
- i = 0
- while i < len(list):
- name = list[i]
- print('列表的元素:%s' %(name))
- i += 1
-
- # for循环
- # name表示列表的元素
- for name in list:
- print(f'列表的元素:{name}')
for循环遍历与while循环遍历的比较:
元组的定义方式:
(元素,元素,元素,...)
元组的操作方法:
元组的注意事项:
不可修改内容(可以修改内部list的内部元素)
元组的特点:
- # 定义元组
- t1 = (1,"hello",True)
- t2 = ()
- t3 = tuple()
- # <class 'tuple'> (1, 'hello', True)
- print(type(t1),t1)
- # <class 'tuple'> ()
- print(type(t2),t2)
- # <class 'tuple'> ()
- print(type(t3),t3)
-
- # 定义单个元素的元组(要加上逗号)
- t4 = ("hello",)
- # <class 'tuple'> ('hello',)
- print(type(t4),t4)
- t5 = ("hello")
- # <class 'str'> hello
- print(type(t5),t5)
-
- # 元组的嵌套
- t6 = ((1,2,3),(4,5,6))
- # 下标索引取出内容
- num = t6[1][2]
- # 6
- print(num)
-
- # # 修改元组内容
- # # TypeError: 'tuple' object does not support item assignment
- # t1[1] = "world"
-
- # 可以修改内部list的内部元素
- t7 = (1,2,["ydh","hhh"])
- t7[2][1] = "aaa"
- # (1, 2, ['ydh', 'aaa'])
- print(t7)
字符串也是数据容器。字符串可以看做是字符的容器,支持下标索引等特性。
字符串的操作方法:
字符串的特点:
- my_str = "itheima and itcast"
- # 1.下标索引取值
- value = my_str[2]
- # h
- print(value)
- value2 = my_str[-2]
- # s
- print(value2)
-
- # # TypeError: 'str' object does not support item assignment
- # my_str[2] = "H"
-
- # 2.index方法
- value = my_str.index("and")
- print(value)
-
- # 3.replace方法
- new_my_str = my_str.replace("it", "程序")
- print(new_my_str)
-
- # 4.split方法
- my_str = "hello python itheima itcast"
- my_str_list = my_str.split(" ")
- # ['hello', 'python', 'itheima', 'itcast']
- print(new_my_str)
-
- # 5.strip方法
- my_str = " itheima and itcast "
- # 不传参
- new_my_str = my_str.strip()
- # itheima and itcast
- print(new_my_str)
-
- my_str = "12itheima and itcast21"
- # 传参
- new_my_str = my_str.strip("12")
- # itheima and itcast
- print(new_my_str)
-
- # 6.count方法
- my_str = "itheima and itcast"
- count = my_str.count("it")
- print(count)
-
- # 7.len方法
- num = len(my_str)
- print(num)
序列:内容连续、有序、支持下标索引的一类数据容器。列表、元组、字符串都可视为序列。
- # 对list进行切片,从1开始,4结束,步长1
- my_list = [0,1,2,3,4,5,6]
- # 步长为1可以省略
- result1 = my_list[1:4]
- # [1, 2, 3]
- print(result1)
-
- # 对tuple进行切片,从头开始,到最后结束,步长1
- my_tuple = (0,1,2,3,4,5,6)
- # 起始从头开始和结束到尾结束可以省略,步长为1可以省略
- result2 = my_tuple[:]
- # (0, 1, 2, 3, 4, 5, 6)
- print(result2)
-
- # 对str进行切片,从头开始,到最后结束,步长2
- my_str = "0123456"
- result3 = my_str[::2]
- # 0246
- print(result3)
-
- # 对str进行切片,从头开始,到最后结束,步长-1
- my_str = "0123456"
- result4 = my_str[::-1]
- # 6543210 相当于字符串逆序
- print(result4)
-
- # 对列表进行切片,从3开始,到1结束,步长-1
- my_list = [0,1,2,3,4,5,6]
- result5 = my_list[3:1:-1]
- # [3, 2]
- print(result5)
-
-
- # 对元组进行切片,从头开始,到尾结束,步长-2
- my_tuple = (0,1,2,3,4,5,6)
- result6 = my_tuple[::-2]
- # (6, 4, 2, 0)
- print(result6)
- my_str = "万过薪月,员序程马黑来,nohtyP学"
- # 先倒序,后切片
- result1 = my_str[::-1][9:14]
- print(result1)
-
- # 先切片,后倒序
- result2 = my_str[5:10][::-1]
- print(result2)
-
- # 先分隔,再替换,最后倒序
- result3 = my_str.split(",")[1].replace("来", "")[::-1]
- print(result3)
集合的定义方式:
{元素,元素,元素,...}
集合的常用操作:
- # 定义集合
- my_set = {"传智教育", "黑马程序员", "itheima", "传智教育", "黑马程序员", "itheima", "传智教育", "黑马程序员", "itheima"}
- my_set_empty = set()
- # <class 'set'> {'itheima', '传智教育', '黑马程序员'} 不重复,无序
- print(type(my_set),my_set)
- # <class 'set'> set()
- print(type(my_set_empty),my_set_empty)
-
-
- # 添加新元素
- my_set.add("Python")
- my_set.add("黑马程序员")
- # {'传智教育', 'Python', 'itheima', '黑马程序员'}
- print(my_set)
-
- # 移除元素
- my_set.remove("传智教育")
- # {'itheima', 'Python', '黑马程序员'}
- print(my_set)
-
- # 随机取出一个元素
- my_set = {"传智教育", "黑马程序员", "itheima"}
- element = my_set.pop()
- # 黑马程序员
- print(element)
-
- # 清空集合, clear
- my_set.clear()
- # set()
- print(my_set)
-
- # 取2个集合的差集
- set1 = {1, 2, 3}
- set2 = {1, 5, 6}
- set3 = set1.difference(set2)
- # set1-set2={2, 3}
- print(f"set1-set2={set3}")
-
-
- # 消除2个集合的差集
- set1 = {1, 2, 3}
- set2 = {1, 5, 6}
- set1.difference_update(set2)
- # {2, 3},{1, 5, 6}
- print(f"{set1},{set2}")
-
- # 2个集合合并为1个
- set1 = {1, 2, 3}
- set2 = {1, 5, 6}
- set3 = set1.union(set2)
- # {1, 2, 3, 5, 6}
- print(set3)
-
- # 统计集合元素数量len()
- set1 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
- num = len(set1)
- # 注意:虽然定义集合时存在重复元素,但是在打印集合或者显示集合中元素个数时会进行去重处理
- # 5
- print(num)
-
- # 集合的遍历
- # 集合不支持下标索引,不能用while循环
- # 可以用for循环
- set1 = {1, 2, 3, 4, 5}
- for element in set1:
- print(element)
遍历集合元素:
集合的特点:
字典可以提供基于Key检索Value的场景实现,就像查字典一样。
字典的定义语法:
{key:value,key:value,...,key:value}
- # 定义字典
- my_dict = {"张三":99,"李四":88,"王五":77}
- # 内容:{'张三': 99, '李四': 88, '王五': 77},类型:<class 'dict'>
- print(f"内容:{my_dict},类型:{type(my_dict)}")
-
-
- # 定义空字典
- my_dict_empty = {}
- my_dict_empty2 = dict()
- # 内容:{},类型:<class 'dict'>
- print(f"内容:{my_dict_empty},类型:{type(my_dict_empty)}")
- # 内容:{},类型:<class 'dict'>
- print(f"内容:{my_dict_empty2},类型:{type(my_dict_empty2)}")
-
- # 定义重复Key的字典
- my_dict = {"张三":99,"张三":88,"王五":77}
- # {'张三': 88, '王五': 77} 字典中出现重复数据时,新数据会覆盖旧数据
- print(my_dict)
-
- # 从字典中基于Key获取Value
- my_dict = {"张三":99,"李四":88,"王五":77}
- score = my_dict["李四"]
- # 88
- print(score)
-
- # 定义嵌套字典
- stu_score_dict = {
- "张三":{
- "语文": 84,
- "数学": 89,
- "英语": 96
- },"李四":{
- "语文": 78,
- "数学": 63,
- "英语": 85
- },"王五":{
- "语文": 86,
- "数学": 88,
- "英语": 100
- }
- }
-
- # 从嵌套字典中获取数据
- # 李四的语文分数
- score = stu_score_dict["李四"]["语文"]
- # 78
- print(score)
注意
- my_dict = {"周杰轮": 99, "林俊节": 88, "张学油": 77}
- # 新增元素
- my_dict["王力鸿"] = 66
- # {'周杰轮': 99, '林俊节': 88, '张学油': 77, '王力鸿': 66}
- print(my_dict)
-
- # 更新元素
- my_dict["周杰轮"] = 60
- # {'周杰轮': 60, '林俊节': 88, '张学油': 77, '王力鸿': 66}
- print(my_dict)
-
- # 删除元素
- score = my_dict.pop("周杰轮")
- # {'林俊节': 88, '张学油': 77, '王力鸿': 66},60
- print(f"{my_dict},{score}")
-
- # 清空元素, clear
- my_dict.clear()
- # {}
- print(my_dict)
-
- # 获取全部的key
- my_dict = {"周杰轮": 99, "林俊节": 88, "张学油": 77}
- keys = my_dict.keys()
- # dict_keys(['周杰轮', '林俊节', '张学油']) 并非直接的列表
- print(keys)
- # ['周杰轮', '林俊节', '张学油'] 调用list函数转换为列表形式
- print(list(keys))
-
- # 遍历字典
- # 方式1:通过获取到全部的key来完成遍历
- for key in keys:
- print(my_dict[key])
-
- # 方式2:直接对字典进行for循环,每一次循环都是直接得到key
- for key in my_dict:
- print(my_dict[key])
-
- # 统计字典内的元素数量, len()函数
- num = len(my_dict)
- # 3
- print(num)
注意
字典的特点
有如下员工信息,请使用字典完成数据的记录。 并通过for循环,对所有级别为1级的员工,级别上升1级,薪水增加1000元。
- emp_info_dict = {
- "王力鸿":{
- "部门":"科技部",
- "工资":3000,
- "级别":1
- },"周杰轮":{
- "部门":"市场部",
- "工资":5000,
- "级别":2
- },"林俊节":{
- "部门":"市场部",
- "工资":7000,
- "级别":3
- },"张学油":{
- "部门":"科技部",
- "工资":4000,
- "级别":1
- },"刘德滑":{
- "部门":"市场部",
- "工资":6000,
- "级别":2
- }
- }
-
- # for循环遍历字典
- for name in emp_info_dict:
- if emp_info_dict[name]["级别"] == 1:
- # 升值加薪操作
- # 获取级别为1的员工的信息(是个字典)
- emp_dict = emp_info_dict[name]
- # 修改员工的信息
- emp_dict["级别"] += 1
- emp_dict["工资"] += 1000
- # 将员工的信息更新回emp_info_dict
- emp_info_dict[name] = emp_dict
-
- print(emp_info_dict)
数据容器可以从以下视角进行简单的分类:
字符串如何比较?
从头到尾,一位位进行比较(比较的是字符所对应的ASCII码值),其中一位大,后面就无需比较了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。