数据容器就是一种可以存储多个元素的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]
# 63210 相当于字符串逆序
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,
"数学": ,
"英语": 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 © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务