容器类型

编程入门 行业动态 更新时间:2024-10-26 20:30:31

<a href=https://www.elefans.com/category/jswz/34/1771431.html style=容器类型"/>

容器类型

1. 列表

1.1 简介

1. 索引

  • 索引就是元素在列表中的位置编号
  • 注意:从列表中取值时,如果超出索引范围,程序会报错

2. 定义

  • 列表的索引0开始
  • 列表用[]定义,元素之间使用,分隔

3. 作用

  • 专门用于存储 一串数据,存储的数据称为 元素

4. 地位

  • list(列表) 是Python中使用最频繁的数据类型

5. 应用

"""
列表定义的格式:
列表变量的名字 = [元素1, 元素2, ……]使用格式:列表变量[位置]位置:也叫下标、索引
"""# 列表定义
name_list = ['mike', 'yoyo', 'rock', 'lily']
#              0       1        2       3
#             -4       -3      -2       -1# 最后一个元素取出来
print(name_list[3])
print(name_list[-1])# 访问列表元素,不要超出范围,不要越界
# IndexError: list index out of range
# print(name_list[4])

1.2 常用操作

1.3 嵌套

1. 简介

  • 一个列表中的元素又是列表,那么这就是列表的嵌套

2. 应用

school_list = [['北京大学', '清华大学'], ['中山大学', '华南理工大学'], ['哈工大', '哈工程']]
#                  0                      1                         2# 取出第 2 个元素,也就是索引为1的元素
print(school_list[1])  # ['中山大学', '华南理工大学']# 先取出索引为1的元素,再继续索引为1的元素
# ['中山大学', '华南理工大学']
#   0            1
print(school_list[1][1])  # '华南理工大学'

1.4 循环遍历

  • 遍历就是从头到尾依次从列表中取出每一个元素
  • Python中专门提供for循环实现遍历
# 遍历,从头开始找,直到结束
name_list = ['mike', 'yoyo', 'rock', 'lily']# 通过while实现遍历
# 1. 定义条件变量i = 0
i = 0# 2. while i < 列表元素个数:
while i < len(name_list):# 3. 取出某个元素,打印name = name_list[i]print(name)# 4. 条件变量的修改i += 1print('==========华丽分割线=============')# for遍历循环,和上面的while效果等价
# 从头到尾 依次从 列表 中取出 每一个元素
for name in name_list:print(name)

1.5 if…in 和 for…in 的区别

  • if…in:判断某个元素是否在列表中,如果在,if的条件为True
  • for…in:从头到尾 依次从 列表 中取出 每一个元素
name_list = ['mike', 'yoyo', 'rock', 'lily']# if…in:判断某个元素是否在列表中,如果在,if的条件为True
name = 'yoyo'# name的内容'yoyo'是否在name_list列表中,如果在,name in name_list结果为True
if name in name_list:print('%s 在列表中' % name)print('==========华丽分割线=============')# for…in:从头到尾 依次从 列表 中取出 每一个元素,这个元素给name赋值
for name in name_list:print(name)

运行结果:

yoyo 在列表中
==========华丽分割线=============
mike
yoyo
rock
lily

1.6 for…else

  • for循环里面没有遇到break语句,for执行完后,则会执行else的分支
name_list = ['mike', 'yoyo', 'rock', 'lily']for name in name_list:print(name)# 测试有break,和没有break的else执行情况# if name == 'yoyo':#     break
else:print('for循环里面没有遇到break语句,for执行完后,则会执行else的分支')

运行结果:

mike
yoyo
rock
lily
for循环里面没有遇到break语句,for执行完后,则会执行else的分支

2. 元组

2.1 定义

  • 元组的索引0开始
  • 元组用 () 定义
# 列表:列表变量 = [元素1, 元素2, ……]
# 元组:元组变量 = (元素1, 元素2, ……)
my_tuple = ('mike', 'yoyo', 'lily')
#             0       1        2# 取出第0个元素
print(my_tuple[0])  # 输出:'mike'
  • 元组中只包含一个元素时,需要在元素后面添加逗号
# 元组只有一个元素的时候,格式: (元素,)
my_tuple1 = (250,)
# 打印my_tuple1的类型
print(type(my_tuple1))

2.2 作用

  • 用于存储** 一串数据,元素**之间使用,分隔

2. 常用操作

  • tuple(元组)与列表类似,不同之处在于元组的元素不能修改
my_tuple = ('mike', 'yoyo', 'lily')
# 元组只读不能改
# TypeError: 'tuple' object does not support item assignment
# my_tuple[0] = 'rock' # err

3. 字典

3.1 简介

1. 定义

  • 字典用{}定义
  • 字典使用键值对存储数据,键值对之间使用 ,分隔
    • key是索引,值value是数据
    • 之间使用:分隔
    • 可以取任何数据类型,但只能使用字符串、数字或元组
    • 键必须是唯一的

"""
字典定义格式:字典变量 = {k1:v1, k2:v2,……}取出元素的值:字典变量[键值]
"""
# 字典的定义
info = {'name': 'mike', 'age': 34, 'city': 'sz'}
print(info)  # {'name': 'mike', 'age': 34, 'city': 'sz'}# 取出元素的值:字典变量[键值]
print(info['city'])

2. 作用

  • 字典同样可以用来存储多个数据
    • 通常用于存储描述一个物体的相关信息

3.2 常用操作

3.3 遍历

"""
# 遍历字典, 获取所有的键值对 (键, 值)
for k, v in 字典变量.items():print(k, v)
"""
info = {'name': 'mike', 'age': 34, 'city': 'sz'}for k, v in info.items():print(k, v)

3.4 应用

需求: 登录注册系统
在开发中,字典的应用场景是:

  • 使用多个键值对,存储描述一个物体的相关信息 —— 描述更复杂的数据信息
  • 多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
用户1: {'name': 'mike', 'pwd':123456}
用户2: {'name': 'yoyo', 'pwd':123456}用户管理列表:
user_list = [{'name': 'mike', 'pwd':123456}, {'name': 'yoyo', 'pwd':123456}]

登录注册系统需求:完成用户注册、用户登录功能
思路:

"""
登录注册系统需求:1.用户注册/ 2.用户登录/ 3.退出程序0. 定义一个列表,用于存储用户字典1. 死循环 while True:2. 输入数字指令3. 判断指令,选择分支4. 用户注册功能4.1 输入注册的用户名4.2 通过for遍历列表,取出的每个元素是字典4.3 字典['name']和输入注册的用户名比较是否相等4.4 如果相等,打印提示:名字在列表中,不允许注册4.5 跳出循环4.6 for循环的else,循环里面没有执行到break,则会执行else4.7 输入注册的密码4.8 创建一个字典4.9 字典追加到列表中4.10 打印:注册成功5. 用户登陆功能5.1 输入登陆的用户名和密码5.2 通过for遍历列表,取出的每个元素是字典5.3 字典['name']和登陆用户名比较 and 字典['pwd']和登陆密码比较5.4 如果都相等,打印提示:登陆成功5.5 跳出循环5.6 for循环的else,循环里面没有执行到break,则会执行else5.7 打印:用户名或密码错误,请重新登陆
"""

实现:

# 0. 定义一个列表,用于存储用户字典
user_list = [{'name': 'mike', 'pwd': 123456}, {'name': 'yoyo', 'pwd': 123456}]# 1. 死循环 while True:
while True:#  2. 输入数字指令cmd_num = input("请输入操作: 1.用户注册/ 2.用户登录/ 3.退出程序")# 3. 判断指令,选择分支# 4. 用户注册功能if cmd_num == "1":# print('用户注册')# 4.1 输入注册的用户名reg_name = input('请输入注册的名字:')# 4.2 通过for遍历列表,取出的每个元素是字典for user_dict in user_list:# 4.3 字典['name']和输入注册的用户名比较是否相等if user_dict['name'] == reg_name:# 4.4 如果相等,打印提示:名字在列表中,不允许注册print(reg_name, '名字在列表中,不允许注册')# 4.5 跳出循环break# 4.6 for循环的else,循环里面没有执行到break,则会执行elseelse:# 4.7 输入注册的密码reg_pwd = input('请输入注册的密码:')# 4.8 创建一个字典user_dict = {'name': reg_name, 'pwd': reg_pwd}# 4.9 字典追加到列表中user_list.append(user_dict)# 4.10 打印:注册成功print('注册成功')# 5. 用户登陆功能elif cmd_num == "2":# print('用户登录')# 5.1 输入登陆的用户名和密码login_name = input('请输入登录用户名:')login_pwd = int(input('请输入登录密码:')) # 密码要转换为整型# 5.2 通过for遍历列表,取出的每个元素是字典for user_dict in user_list:# 5.3 字典['name']和登陆用户名比较 and 字典['pwd']和登陆密码比较if user_dict['name'] == login_name and user_dict['pwd'] == login_pwd:# 5.4 如果都相等,打印提示:登陆成功print('登陆成功')# 5.5 跳出循环break# 5.6 for循环的else,循环里面没有执行到break,则会执行elseelse:# 5.7 打印:用户名或密码错误,请重新登陆print('用户名或密码错误,请重新登陆')elif cmd_num == "3":print('退出程序')breakelse:print("输入错误,重新输入")

4. 字符串

4.1 简介

1. 定义

  • 字符串就是一串字符,是编程语言中表示文本的数据类型
  • 可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始
  • 也可以使用for循环遍历字符串中每一个字符
"""
字符串变量 = '字符串内容'
说明:可以是单引号、双引号、三引号"""
my_str = 'python'
#         012345# 取某个元素,和列表一样
print(my_str[0])# 遍历取所有元素
for c in my_str:print(c)

2. 表示

  • 在 Python 中可以使用**一对双引号"或者 一对单引号'或者 一对三引号'''定义一个字符串
str1 = 'python'
str2 = "python"
str3 = """python"""
str4 = '''python''

4.2 f-strings 字符串格式化

  • f-strings是Python 3.6之后的一种新的字符串格式化方法,要使用f-strings,只需在字符串前加上f、或F:
name = 'mike'
age = 34
sex = 'male'# 传统方式格式化
print('我叫%s, 年龄为%d, 性别为:%s' % (name, age, sex))# 和上面打印效果一样
print(f'我叫{name}, 年龄为{age}, 性别为:{sex}')
print(F'我叫{name}, 年龄为{age}, 性别为:{sex}')

4.3 常用操作

4.4 切片

1. 简介

  • 切片 译自英文单词slice,翻译成另一个解释更好理解: 一部分

2. 作用

  • 切片使用索引值来限定范围,根据步长 从原序列中取出一部分元素组成新序列

3. 应用场景

  • 切片方法适用于字符串、列表、元组
字符串[开始索引:结束索引:步长]


注意:

  1. 指定的区间属于左闭右开[开始索引, 结束索引) 对应开始索引 <= 范围 < 结束索引
    • 起始位开始,到结束位的前一位结束(不包含结束位本身)
  2. 从头开始,开始索引数字可以省略,冒号不能省略
  3. 到末尾结束,结束索引数字和冒号都可以省略
  4. 步长:理解为走的步数,正数说明是从左往右,负数是从右往左,默认步长为+1
    步长默认为1,如果元素连续,数字和冒号都可以省略

4. 应用

需求:

  1. 截取从 2 ~ 5 位置 的字符串
  2. 截取从 2 ~ 末尾 的字符串
  3. 截取从 开始 ~ 5 位置 的字符串
  4. 从开始位置,每隔一个字符截取字符串
  5. 截取字符串末尾两个字符
  6. 字符串的逆序
    思路:
"""
字符串[开始位置:结束位置:步长]
0. 步长默认为1,步长理解为走几步
1. 字符串[开始位置:结束位置]   开始位置 ~(结束位置-1)
2. 字符串[开始位置: ]       开始位置 ~ 结束位置,末尾位置不写,默认能取到末尾那个位置
3. 字符串[ :结束位置]       0 ~(结束位置-1),开始位置不写,默认从第0个元素开始
"""

实现:

temp_str = "abcdefgh"
# "a b c d e f g h"
#  0 1 2 3 4 5 6 7
# -7 -6 -5 -4 -3 -2 -1# 截取从 2 ~ 5 位置 的字符串
print(temp_str[2:6])# 截取从 2 ~ 末尾 的字符串
print(temp_str[2:])# 截取从 开始 ~ 5 位置 的字符串
print(temp_str[0:6])
print(temp_str[:6])# 从开始位置,每隔一个字符截取字符串,也就是说走2步
print(temp_str[::2])# 截取字符串末尾两个字符
print(len(temp_str)-2)  # len(temp_str)获取字符串的长度
print(temp_str[len(temp_str)-2:])
print(temp_str[-2:])# 字符串的逆序(面试题)
print(temp_str[::-1])

5. 集合

5.1 简介

1. 定义

  • 集合用{}定义,元素 之间使用,分隔

2. 作用

  • 可通过集合对列表中的元素完成去重功能
set(列表)
# 集合:元素不会重复,{元素1,元素2……}
# 定义集合
my_set = {1, 2, 1, 2, 1, 2}
print(my_set)  # {1, 2}
print(type(my_set))  # <class 'set'># 通过集合完成对列表去重功能
name_list = ['mike', 'yoyo', 'mike']
# set(name_list):给列表转换为set类型,即可完成去重功能
temp_set = set(name_list)
print(temp_set)  # {'mike', 'yoyo'}

6. 类型转换

6.1 简介

6.2 应用

# 列表转元组、集合 类型
my_list = [1, 2, 3, 5, 3, 5]# 列表转换为元组类型
my_tuple = tuple(my_list)
print(my_tuple)  # (1, 2, 3, 5, 3, 5)# 列表转换为集合类型
my_set = set(my_list)
print(my_set)   # {1, 2, 3, 5}print('============华丽分割线============')# 元组转列表、集合 类型
my_tuple = (1, 2, 3, 5, 3, 5)# 元组转换为列表 类型
my_list = list(my_tuple)
print(my_list)  # [1, 2, 3, 5, 3, 5]# 元组转换为集合 类型
my_set = set(my_tuple)
print(my_set)   # {1, 2, 3, 5}print('============华丽分割线============')# 集合转元组、列表 类型
my_set = {1, 2, 3}# 集合转换为列表 类型
my_list = list(my_set)
print(my_list)  # [1, 2, 3]# 集合转换为元组 类型
my_tuple = tuple(my_set)
print(my_tuple)  # (1, 2, 3)

7. 公共语法

公共语法为大部分容器类型的通用方法

7.1 Python 内置函数

Python 包含了以下内置函数:

7.2 切片

7.3 运算符


注意

  • in 在对字典操作时,判断的是字典的键
  • innot in 被称为 成员运算符

更多推荐

容器类型

本文发布于:2024-03-07 04:18:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1716825.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:容器   类型

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!