Python容器类型(Python系列07)

前言:Python的容器类型有哪些呢?列表list,元组tuple,字符串str,集合set以及字典dict,

那我们来看看他们的用法和作用吧。

目录

1.列表list

2.元组tuple

3.字符串str

4.集合set

5.字典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

实在太多了,一个一个敲不过来,可以去看看这篇文章,写的很不错。

Python字符串常用方法汇总

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值