Python容器
- 列表
- 元组
- 字符串
- 集合
- 字典
列表
定义方法:[元素1, 元素2, …]
列表一次可以存储多个不同数据类型的数据,支持嵌套。
例如:
list1 = ["张三", 33, True]
print(list1)
print(type(list1))
list2 = [list, "李四", 11]
print(list2)
print(type(list2))
运行结果:
访问列表中的值:
list3 = ["张三", "李四", "王五", "赵六", "周七", "孙八"]
print(list3[0]) # 输出列表第一个---张三
print(list3[-6]) # 输出列表倒数第六个---张三
print(list3[-1]) # 输出列表倒数第一个---孙八
若有多个列表嵌套:
list4 = [[1, 2, 3, 4], [10, 11, 12], [17, 18, 19]]
print(list4[1][2])
print(list4[-1][-1])
查找元素在列表的下标:
有则输出下标,没有则报错。
list3 = ["张三", "李四", "王五", "赵六", "周七", "孙八"]
print(list3.index("王五"))
print(list3.index("孙行者"))
运行结果:
也可以以截取的方式读取列表:
list = ["张三", "李四", "王五", "赵六", "周七", "孙八"]
# 读取 0-3,不包括4
print("list[0:4]: ",list[0:4])
# 读取 1到倒数-3,不包括倒数第二
print("list[1:-2]: ",list[1:-2])
运行结果:
修改特定下标的值:
# 修改list3列表中下标为2的值为 孙行者
list3[2] = "孙行者"
插入元素:
语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素
# 在list3列表中下标为2的位置插入一个 "111"
list3.insert(2,"111")
在尾部添加单个或多个元素:
添加一个:append
添加多个:extend
list3 = ["张三", "李四", "王五", "赵六", "周七", "孙八"]
list3.append("九九")
print(list3)
list4=[666,777,888]
list3.extend(list4)
print(list3)
运行结果:
删除指定下标的元素:
del:直接删除
pop:删除并返回要删除的值
删除指定元素:
若有多个王五,则只删除第一个王五
list.remove("王五")
清空列表:
list.clear()
统计某元素在列表中的个数:
list.count("王五")
统计列表元素个数:
len(列表名)
num = len(list)
遍历列表:
list = ["张三", "李四", "王五"]
for s in list:
print(s)
还有种玩法:
# [表达式 for 变量 in 列表 if 条件]
# 遍历 list ,如果是2的倍数,那就×2
list = [1, 2, 3, 4, 5, 6]
print([x * 2 for x in list if x % 2 == 0])
# 运行结果为:[4, 8, 12]
元组
列表中的元素是可以修改的,如果不想被修改,我们可以使用元组。元组里的类型也可以是不一样的,同样支持嵌套,支持下标访问,使用()定义:
t1=("zhangsan","lisi",123)
print(type(t1))
print(t1)
运行结果:
注意:当元组中只有一个元素时,需要在后面加上逗号,否则就不会被当成元组:
元组中的元素不可修改,但是可以进行拼接成一个新的元组;
t1=("zhangsan","lisi")
t2=("zhangsan",)
t3 = t1 + t2
字符串
用双引号或单引号:
str = "zhangsan"
print(str[0]) # 输出下标为 0的字符
print(str[-1]) # 输出下标倒数第一
print(str[1:]) # 从下标 1 开始输出,直到最后
print(str.index('san')) # 输出 san 的起始位置
字符串替换, 并不是修改字符串,而是生成一个新的字符串:
str = "zhangsan"
# 将 str 中的字符串 a,替换成 *
# 输出 zh*ngs*n
print(str.replace("a","*"))
字符串分隔:
str="张三 李四 王五 赵六 周七"
# 使用空格分隔,若要使用逗号或其他字符分隔,则在 split 中填入相应的即可。
list1=str.split(" ")
print(list1)
去除首尾空格和指定内容:
逆置:
str="123456"
list1=[1,2,3,4,5]
t1=("zhangsan","lisi","wangwu")
print(str[::-1])
print(list1[::-1])
print(t1[::-1])
运行结果:
集合
集合是一个无序不重复(无序,所以不支持下标访问)的序列,使用大括号{}创建集合,用逗号分隔:
set1 = {1, 2, 3, 1, 5, 4, 2, 3}
print(set1)
运行结果:
添加、删除等操作
set1 = {"张三", "李四", "王五", "赵六", "周七", "孙八"}
# 添加元素
set1.add("老大")
print(set1)
# 删除指定元素
set1.remove("老大")
print(set1)
# 随机取出元素,取出后原集合就不存在这个元素了
print(set1.pop())
print(set1)
运行结果:
差集
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
# 取差集,存在set1中,但不存在set2中,set1不会变
print(set1.difference(set2))
print(f"set1结果:{set1}")
# 同样是差集,但是会把结果重新赋给set1
set1.difference_update(set2)
print(f"set1结果:{set1}")
运行结果:
合并集合
# 合并两个集合,并去除重复元素
print(set1.union(set2))
字典
用键值对表示,键和值之间用冒号分隔,键值对之间用逗号分隔,key 不允许重复,如果重复,后面的则会覆盖前面的,格式如下:
d = {key1 : value1, key2 : value2, key3 : value3 }
d1 = {"name": "zhangsan", "age": 18}
字典也可以嵌套:
d1 = {
"张三":{
"语文":77,
"数学":88,
"英语":68
},
"李四": {
"语文": 86,
"数学": 94,
"英语": 78
},
"王五": {
"语文": 87,
"数学": 92,
"英语": 58
}
}
可通过如下方式访问:
print(f"学生信息: {d1}")
d2 = d1["张三"]
print(f"张三成绩: {d2}")
math_score = d1["张三"]["数学"]
print(f"张三数学成绩:{math_score}")
字典常见操作:
dict1 = {"张三": 23, "李四": 31, "王五": 44}
# 添加或更新键值对,原字典中没有则添加,有则更新
dict1["赵六"] = 33
print(dict1)
# 删除
dict1.pop("张三")
print(dict1)
# 获取全部的 key
print(dict1.keys())
# 获取字典长度
print(len(dict1))
# 清空字典
dict1.clear()
print(dict1)
运行解果: