前言:Python的容器类型有哪些呢?列表list,元组tuple,字符串str,集合set以及字典dict,
那我们来看看他们的用法和作用吧。
目录
1.列表list
1.列表的定义
# 列表的定义 # 定义空列表 arr = [] arr = list() # 定义有规律列表 arr = [i for i in range(10)] arr = [i for i in range(1, 10, 2)] # 定义普通列表 arr = [1, 'tan', '好的']
2.列表常用方法
a = [0, 1, 2, 3] print(a) # 1.增 append, extend, insert a.append(1) # a.append([1, 2]) # 这会直接将[1, 2]这个列表添加到a列表中 a.extend([1, 2]) # 这个方法可以将列表与列表合并 # 插入 insert a.insert(0, '好的') # 将元素插入到指定位置。 print(a) # 2.删 pop del remove a.pop() # 默认删除最后一个 pop(index) 删除索引为index的元素 并返回删除的元素 del a[0] # 删除指定元素 del a[2:4] # 批量删除 a.remove(1) # 删除元素1,删除一个,从索引小的开始 print('del', a) # 3.改 a[2] = 0 # 4.查 index print(a.index(0)) # 通过索引查找元素 print(a[0]) # 5.查看长度 print(len(a)) # 查看a列表的长度,看它有多少个元素 # 6.a.count(数据) 计数 print(a.count(0)) # 查看0在列表中出现的次数 a = [4, 1, 2, 3, 5] # 7.sorted sort排序 print(sorted(a, reverse=True)) # reverse参数默认值为False, 也就是升序排列 a.sort(reverse=False) print(a) # 8.倒序reverse,列表的元素倒过来 a.reverse() # 9.复制copy,将列表copy b = a.copy() print(b) # 10.清空clear, 将列表所有元素清空 b.clear() print(b)
3.列表内存图
先来看一段代码
a = [1, 2, 3, 4, 5] b = a b[0] = 5 print(a) # [5, 2, 3, 4, 5]
为什么当b改变了,a也会呗改变,让我们来看看,内存时怎么处理的吧。
如上图所示,b = a 并没在内存中创建新的对象,而是将a变量名所存储的列表内存地址赋值给了b,而当列表中元素改变的时候,不会创建一个新的对象,列表的内存地址不变,变得是列表中储存的元素内存地址。
所以会出现上面b改变,a也会随之改变。
那么我就是想把a列表赋值给b,且b的改变不会影响到a,那应该如何处理呢?
使用切片(切片截取的是左开右闭区间),copy函数
# copy函数 a = [1, 2, 3, 4, 5] b = a.copy() b[0] = 5 print(a) # [1, 2, 3, 4, 5] print(b) # [5, 2, 3, 4, 5] # 切片 b = a[:] b[0] = 5 print(a) # [1, 2, 3, 4, 5] print(b) # [5, 2, 3, 4, 5]
内存图奉上
2.元组tuple
1.元组的定义
# 定义元组 a = () print(a) a = tuple() print(a) a = (1, 2, 3) print(a)
2.元组的方法
a.count(1) #计数, a.input(1) #通过索引查找元素
元组是不能增加删除和修改的,但是元组里的元素可以,比如([1, 2]),就可以对[1, 2]进行修改。可以这样理解,元组是只读的列表。
3.元组的应用场景
1.保护数据,当一些数据我们不想被修改的时候可以用元组来保持。
2.函数的返回值,当函数有多个返回值的时候我们可以用元组来返回。
3.解包,代码案例
# 解包 a = (1, 2, 3) b, c, d = a print(b, c, d)
3.字符串str
实在太多了,一个一个敲不过来,可以去看看这篇文章,写的很不错。
4.集合set(座右铭:在我的世界里,你就是唯一)
# 1.集合自动去重
set1 = {3, 4, 5, 6, 6, 3, 9, 1, 2}
print(set1) # 功能,集合内不可有重复元素
# 2.集合自动排序
set2 = set([3, 4, 5, 6, 6, 3, 9, 1, 2])
print(set2)
num = [3, 2, 6, 8, 4, 5, 7]
print(set(num)) # 集合可自动排序
# 增
set2.add(7)
print(set2)
# 删
set2.remove(5)
print(set2)
# 改
# 因为集合没法调用索引,所以改数据只能先删掉再添加
# 查,
# 因为集合没法调用索引,所以可将己何妨转换为列表然后进行遍历。
# 在我的世界里,你就是唯一,且永远不会改变。
set3 = frozenset([2, 1, 4])
print(set3)
5.字典dict
dict = {"name": "谭", "age": 17, "sex": "男"}
print(dict.keys()) # 直接访问全部键
print(dict.values()) # 直接访问值
print(dict["name"]) # 由键访问值
print(dict.get("name")) # 由键访问值,好处不存在时也能不报错
# 增
# 直接让键等于一个值即可
dict["id"] = 1925123720
print(dict)
# 删
# del 和 clear
del dict["id"]
print(dict)
# dict.clear()
# print(dict)
# 改
dict["age"] = 18
print(dict)
# 查
for key in dict.keys(): # 获得所有的键
print(key, end=" ")
print()
for value in dict.values(): # 获得所有的值
print(value, end=" ")
print()
print(dict.items()) # 得所有键值
for key, value in dict.items(): # 因为它获得的是键值对,所有可以打印两个
print(key, value)
# 列表的知识点
list = ["小谭", "小孙", "小刘", "小赵", "小陈", "小徐"]
# 枚举循环
for i, x in enumerate(list):
print(i + 1, x)