Python—容器入门
一、什么是容器
容器:可以存放多个元素的一种用来补充变量无法存储大量数据的缺陷的数据类型
二、Python中的容器有哪些
- 列表(list)
- 集合(set)
- 元组(tuple)
- 字典(dict)
三、列表(list)
list: 有序的数列
在程序中,线性表:数组、链表、栈、队列
python的list底层就是基于双向链表结构设计的
如何定义list
1、借助弱数据类型语言的特点
[] # 列表是以[]的形式表现
ls = [] # 空列表
ls = [1, 2,3,4,5,6] # 创建了一个有如下元素的列表
2、借助python提供的一个全局函数创建list
ls = list()
ls = list([1,23,3,4,4554])
访问list中的元素(element)
线性表,都是具有下标(索引)的
列表对象[下标]
注意:下标从0开始,注意下标越界问题!!!
print(ls[4]) # 访问ls中的第五个元素
ls[1] = 100 # 将ls列表中的第二个元素值修改为100
如何统计list中的元素:
全局函数:len()
list的常用方法:
-
append(元素) # 在列表尾部追加元素
-
insert(index, 元素) # 在对应索引为插入元素
-
remove(元素) # 移除元素,如果不存在,则报错
-
pop(index=-1) # 默认移除最后一个元素,如果存在参数,则该参数就是要移除的下标,注意:下标有误,会抛出异常
-
clear() # 清空列表
-
reverse() # 翻转列表元素顺序
-
sort() # 排序
-
index(元素) # 查找元素的位置
-
count(元素) # 统计元素的数量
-
extend # 合并列表
-
copy() # 复制列表对象,其本质是浅拷贝
四、集合(set)
特点:1、无序的;2、不能重复
底层使用的hash表(哈希表)的结构设计的
集合的定义
1、借助弱数据类型语言的特点
注意:必须要存在值,否则默认空{}是字典类型,而不是set
s = {1,2,4}
2、全局set函数
s = set()
遍历只能使用for循环遍历,while没有办法遍历(无序)
set的常用方法:
- add() # 添加元素
- clear() # 清除列表
- copy() # 浅拷贝对象
- difference() # 差集
- intersection() # 交集
- union() # 并集
- remove(元素) # 移除元素,如果不存在,则报错
- pop(元素) # 随机(arbitrary)移除,不存在,则报错
- discard(元素) # 随机(arbitrary)移除,不存在,则什么都不做
五、tuple(元组)
不可变数据类型,就是说,它里面的元素是不允许被修改的!!
定义与列表、集合类似,也存在两种方式
常见方法:
count # 统计元素个数
index # 查看元素索引位置
六、字典(dict)
字典的定义
d = {}
d = {k1: v1, k2: v2}
d = dict({...})
字典的常用方法:
- clear
- copy
- get
- keys() # 将所有的key返回
- values() # 将所有的值返回
- setdefault
- items() # 一对一对的返回
- pop(key) # 通过key删除对应键值对
- popitem() # 安装 LIFO (last-in, first-out) order 删除键值对
七、典型例题
- 完成一个登录注册案例(要求使用容器保存数据)
#选择容器 想法1 :两个列表 X 想法2: 一个字典
import sys
rq = {}
while True:
print("1.进入注册系统 2.查看容器 3.退出系统")
choice = int(input("请做出选择:"))
if choice == 1:
yhm = str(input('请输入您的用户名: '))
i = 0
while i <= 0:
if yhm not in rq:
while True:
mm1 = str(input('请输入您的密码:'))
mm2 = str(input('请再次输入您的密码:'))
if mm1 != mm2:
print('密码不一致,请重新输入')
elif mm1 == mm2:
rq['%s'%yhm] = mm2
print('注册成功')
i += 1
break
elif yhm in rq:
yhm = str(input('用户名已存在,请重新输入: '))
elif choice == 2:
print('‘用户名’,‘密码’对应如下表:\n %s'%rq)
elif choice == 3:
sys.exit()
else:
input("您的输入有误,请重新输入~ 按任意键继续")
- 存在如下一个列表[1,3,5,3,4,100,-21,1,6],请完成排序,注意,不要使用系统api
l0 = [1,3,5,3,4,100,-21,1,6]
print('原列表为:%s'%l0)
l0.sort(reverse = True) #True为逆序,False为正序
print('经逆序排序后列表为:%s'%l0)
l0.sort(reverse = False)
print('经正序排序好列表为:%s'%l0)```