Python数据结构
list(列表)
创建两个列表List
name = ["meowrain","mike","John"]
matrix = [[0,1],[2,3]]
访问列表中的值
name = ["a","b","c"]
matrix = [[0,1],[2,3]]
print(name[0])
print(matrix[0])
print(matrix[0][0])
将列表中的值反过来显示
第一种方法:
num = [1,2,3,4,5,6,7,8,9]
print(num[::-1])
第二种方法:
num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
num.sort(reverse=True)
print(num)
把列表中乱七八糟的数字,按照从小到大或者从大到小的顺序排序
sorted(listname)
案例:把num列表中的数字,按照从小到大的顺序排序
num = [9,54,129,44,66,33,78,999]
print(sorted(num))
案例: 把num列表中的数字,按照从大到小的顺序排序
num = [9,54,129,44,66,33,78,999]
print(sorted(num,reverse=True))
合并两个列表
name = ["a","b","c"]
name_2 = ["d","e","f","g"]
combined = name + name_2
print(combined)
使用list函数,创建list(包括0到20的数字)
num = list(range(0,21)) #创建列表 包括数字 0 到 20
print(num)
使用list函数,把字符串的每一个字母添加到list中
characters = list("meowrain")
print(characters)
使用for循环,遍历list下的元素
num = [1,2,3,4,5,6,7,8,9]
for i in num:
print(i)
python enumerate()函数
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
以上来自菜鸟教程
name = ["java","javascript","mysql","python"]
for uname in enumerate(name):
print(uname)
在列表中添加项和删除项
添加项:
-
在列表末尾添加
list.append(object)
-
在列表开头添加
list.insert(index, object)
当然,用这个也可以改变index为1或者其它数字对应的元素
案例1,在name列表末尾添加`c#
name = ["java","javascript","mysql","python"]
name.append("c#")
print(name)
案例2:在name列表头添加c#
name = ["java","javascript","mysql","python"]
name.insert(0, "c#")
print(name)
删除列表中的元素 list.pop(index)
,list.remove(value)
,del list[number:number]
,list.clear()
案例1: 删除列表中的第一个元素
name = ["java","javascript","mysql","python"]
name.pop(0)
print(name)
name = ["java","javascript","mysql","python"]
name.remove("java")
print(name)
删除列表中的多个元素 del list[number:number]
案例2:删除列表中的第一个到第三个元素
name = ["java", "javascript", "mysql", "python"]
del name[0:3]
print(name)
删除列表中的所有元素
name = ["java", "javascript", "mysql", "python"]
name.clear()
print(name)
查看列表元素对应的索引 list.index(value)
案例1:查看python在name列表中的索引值为:
name = ["java", "javascript", "mysql", "python"]
print(name.index("python"))
list.count(value)
查看元素在列表中的出现次数
案例:查看python在name列表中的出现次数
name = ["java", "javascript", "mysql", "python","python"]
print(name.count("python"))
turple(元组)
如果想要传递的信息不被篡改,列表就不合适了
元组和列表一样,都可以封装多个,不同类型的元素在内
元组一旦定义完成,就不可修改
定义元组
# 元组定义:定义使用圆括号,用逗号隔开数据
# 方式1
variable = ("element1","element2"...)
注意: 定义元组的时候,如果只有一个元素,要在后面添加一个逗号,否则它就不是元组类型了
比如:
example = ("good") print(type(example))
可以看到,如果不加逗号,就变成字符串类型了
那加上逗号呢?
example = ("good",) print(type(example))
定义空元组
第一种方法:
n = ()
print(n)
第二种方法:
n = tuple()
print(n)
元组下标取内容
直接参考下面的元组嵌套就行了,我觉得已经足够说明怎么取内容了
元组的嵌套
# 定义一个嵌套元组
thing = ((1, 2, 3), (2, 3, 4))
print(f'thing的类型是{type(thing)},内容是{thing},\n 第一个元素的内容是{thing[0]}, 第一个元素也是元组,第一个元素中的第一个元素为:{thing[0][0]}')
元组的相关操作
tu = ("nice", "good", "yyds", "nb", "good")
print(
f'我们来看下nb这个字符串对应的下标吧:\n {tu.index("nb")} \n接下来我们来看一下count,来查一下good出现了多少次吧:\n {tu.count("good")}\n最后呢,我们来看一下这个元组的长度吧:\n {len(tu)}')
元组的遍历
while遍历
tu = ("nice", "good", "yyds", "nb", "good")
i = 0
while i < len(tu):
print(f'tu元组中的元素有: {tu[i]}')
i += 1
for遍历
tu = ("nice", "good", "yyds", "nb", "good")
i = 0
for j in tu:
print(f'tu元组中的元素有: {j}')
打印结果:
元组的内容虽然不能修改,但是如果嵌套了一个list,那就是可以修改List里的内容的
集合set
定义集合
n = {"done", "uu"}
print(type(n))
定义空集合
n = set()
因为集合是无序的,所以集合不支持下标索引访问,但是集合是允许修改的
集合修改方法
添加新元素: add
n = set()
n.add("python")
n.add("javascript")
print(f"添加元素后,n集合内容: {n}")
删除元素:
n = set()
n.add("python")
n.add("javascript")
print(f"添加元素后,n集合内容: {n}")
n.remove("python")
print(f"删除元素后,n集合内容: {n}")
随机取一个元素:pop
n = {"python", "javascript", "java"}
print(f'随机取的元素为 {n.pop()}')
清空集合:clear
n = {"python", "javascript", "java"}
print(f'随机取的元素为 {n.pop()}')
n.clear()
print(f'清除所有元素以后,n集合内的元素为: {n}')
取出2个集合的差集: difference
语法: 集合1.difference(集合2) 功能:取出集合1和集合2的差集,集合1有而集合2没有的
set1 = {1, 2, 3}
set2 = {1, 3, 4, 5, 6}
set3 = set1.difference(set2) # 输出set1和set2的差集,为2
print(f"set1和set2的差集为: {set3}")
消除2个集合的差集:
语法: 集合1.difference_update(集合2)
功能: 消除集合1中,集合1和集合2共同有的元素
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set1.difference_update(set2)
print(f"消除差集后,set1的结果: {set1}")
print(f"消除差集后,set2的结果: {set2}")
两个集合合并为一个
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.union(set2)
print(set3)
查看集合中的元素个数
set1 = {1, 2, 3, 4, 5, 6, 7}
print(f"set1集合中的元素个数为{len(set1)}个")
集合的遍历
set1 = {1, 2, 3, 4, 5, 6, 7}
for i in set1:
print(f"集合的元素有: {i}")
字典
基础定义
value可以为任何数据结构
和集合一样,都用花括号,不过存储的元素是一个个的键值对
my_dict = {"name": "meowrain", "age": 18, "earn": 7000}
print(my_dict)
定义空字典
my_dict = {}
my_dict = dict()
字典数据的获取
字典和集合一样,不可以使用下标索引
但是字典可以通过key值获取对应的value值
语法: dictname[key] ---> 获取value值
my_dict = {"name": "meowrain", "age": 18, "earn": 7000}
print(f"获取键值name的值: {my_dict['name']}")
字典的嵌套
案例:查学生成绩信息
stu_score_dict = {
"李明": {
"语文": 88,
"数学": 150,
"英语": 120
},
"张三": {
"语文": 90,
"数学": 100,
"英语": 56,
},
"赵六": {
"语文": 90,
"数学": 139,
"英语": 123,
}
}
print(f'学生的考试信息:{stu_score_dict}')
# 看一下赵六的成绩信息
print(f'赵六的考试信息:{stu_score_dict["赵六"]}')
# 看一下张三的英语信息
print(f'张三的英语成绩:{stu_score_dict["张三"]["英语"]}')
字典的常用操作
新增元素:
语法:字典[key] = value
n = {}
n["name"] = "meowrain"
print(n)
更新元素
语法:
字典[key] = value
字典的key不可以重复,对已经存在的key执行上述操作,就是更新value值
n = {"name": "meowrain","age":19}
n["age"] = 18
print(n)
删除元素
语法:.pop("key")
dic = {"name":"meowrain","age":18}
age = dic.pop("age")
print(f'经过移除,现在dic字典的内容为{dic},被移除元素age的值为:{age}')
清空字典
dicname.clear()
dic = {"name":"meowrain","age":18}
dic.clear()
print(f'字典被清空了,内容是: {dic}')
获取字典中全部的key
dicname.keys()
stu_score_dict = {
"李明": {
"语文": 88,
"数学": 150,
"英语": 120
},
"张三": {
"语文": 90,
"数学": 100,
"英语": 56,
},
"赵六": {
"语文": 90,
"数学": 139,
"英语": 123,
}
}
print(stu_score_dict.keys())
遍历字典
通过获取到全部的key来完成遍历
# 通过获取到全部的key来完成遍历
keys = stu_score_dict.keys()
for key in keys:
print(f'字典的key是:{key}')
print(f'{key}的value是:{stu_score_dict[key]}')
直接对字典进行for循环
# 直接对字典进行for循环
for key in stu_score_dict:
print(f'字典的key是:{key}')
print(f'{key}的value是:{stu_score_dict[key]}')
统计字典内的元素数量
stu_score_dict = {
"李明": {
"语文": 88,
"数学": 150,
"英语": 120
},
"张三": {
"语文": 90,
"数学": 100,
"英语": 56,
},
"赵六": {
"语文": 90,
"数学": 139,
"英语": 123,
}
}
print(len(stu_score_dict))