数据容器
在编程中,数据容器是一种用于存储多个元素的数据结构。Python中有多种数据容器,常见的包括列表(list)、元组(tuple)、字符串(str)、集合(set)和字典(dict)。每种容器都有其特定的用途和特性。
常见的数据容器及其表示方式
- 列表(list):使用中括号
[]
表示,例如:[元素1, 元素2, 元素3, ...]
。 - 元组(tuple):使用小括号
()
表示,例如:(元素1, 元素2, 元素3, ...)
。 - 字符串(str):使用单引号、双引号、三引号(单或双)表示,例如:
'内容'
、"内容"
、'''内容'''
、"""内容"""
。注意,字符串中的每个字符也被视为一个元素。 - 集合(set):使用大括号
{}
表示,例如:{元素1, 元素2, 元素3, ...}
。 - 字典(dict):使用大括号
{}
表示,包含键值对,例如:{key1: value1, key2: value2, ...}
。每个键值对都是一个元素。
方法和函数对比
在Python中,有两个主要的代码执行单元:方法和函数。方法本质上是函数,但它们位于类(class)中。可以将方法视为属于特定类的函数。虽然方法一定是函数,但并不是所有函数都是方法。
示例:
# 生成随机数
# 自己不会写这个功能,而且Python已经提供了,拿过来用
import random
num = random.randint(1, 10)
print(num)
# 定义一个计算两个数和的函数
def get_sum(a, b):
return a + b
he = get_sum(1, 10)
print(he)
"""
方法: 本质是一个函数,只是这个函数放到class xxx 类中
上述random中的randint本质是一个函数,一般称之为方法
自己写的get_sum就是一个函数
"""
列表的定义
空列表和非空列表
空列表
空列表可以通过以下方式定义:
列表名 = []
列表名 = list()
非空列表
非空列表可以通过以下方式定义:
列表名 = [元素1, 元素2, 元素3, ...]
列表还支持嵌套,即在一个列表中包含另一个列表。
示例:
# 定义空列表
list1 = []
print(list1)
list2 = list()
print(list2)
# 定义非空列表
list3 = ['a', 'b', 'c']
print(list3)
# 列表的嵌套
class1_list = ['张三', '李四', '王五']
print(class1_list)
class2_list = ['赵六', '田七', '周八']
print(class2_list)
school_list = [class1_list, class2_list]
print(school_list)
列表的下标索引
下标索引
列表中的元素可以通过下标索引来访问,索引就是元素的编号,它们有以下特点:
- 正索引:从0开始,从左到右递增。
- 负索引:从-1开始,从右到左递减。
根据下标索引,可以查找和访问列表中的元素,格式为 列表名[索引]
。
示例:
# 下标索引:就是列表中每个元素的编号
# 需求1: 定义列表存储5个学生姓名
name_list = ['张三', '李四', '王五', '赵六', '田七']
# 需求2:查找第一个列表中第一个姓名
name = name_list[0]
print(name)
# 当然也可以使用负索引查找
print(name_list[-5])
# 需求3: 查找最后一个姓名
print(name_list[-1])
# 当然也可以使用正索引查找
print(name_list[4])
# 需求4: 查找索引为2位置的姓名
print(name_list[2])
列表的增删改查
增加元素
列表名.append(元素): 把指定元素追加到列表中
列表名.extend(容器): 把指定容器中每个元素取出,依次放到当前列表中
列表名.insert(索引,元素): 把指定元素插入到列表指定索引位置
示例:
# 添加元素
name_list = []
# 需求: 依次添加'张三', '张三', '李四'到列表中
name_list.append('张三')
name_list.append('张三')
name_list.append('李四')
print(name_list)
# 需求: 一次性添加'王五', '赵六', '田七'到列表中
name_list.extend(['王五', '赵六',田七'])
print(name_list)
删除元素
- del 列表名[索引]: 把指定索引位置的元素删除
- 列表名.pop(索引): 把指定索引位置的元素删除
- 列表名.remove(元素): 把指定元素直接删除
- 列表名.clear() : 清空当前列表
- del 列表名: 删除当前列表
示例:
# 删除元素
name_list = ['张三', '李四', '王五', '赵六', '田七']
# 删除第一个元素
del name_list[0]
print(name_list)
# 删除最后一个元素
name_list.pop(-1)
print(name_list)
# 删除指定元素
name_list.remove('张三')
print(name_list)
# 清空列表
name_list.clear()
print(name_list)
# 删除整个列表
del name_list
print(name_list)# 报错说明删除成功,NameError: name 'name_list' is not defined
修改元素
- 可以通过索引将列表中的元素修改为新的值,格式为
列表名[索引] = 新元素
示例:
# 修改元素
name_list = ['张三', '李四', '王五']
# 修改最后一个元素内容为'钱九'
name_list[-1] = '钱九'
print(name_list)
查找元素
列表名[索引]
:查找指定索引位置上的元素。列表名.count(元素)
:查找指定元素在列表中出现的次数。列表名.index(元素)
:查找指定元素在列表中的索引位置。注意:如果元素不存在,会抛出 ValueError 异常。len(列表名)
:查询当前列表中所有元素的总个数。
示例:
# 查找元素
name_list = ['张三', '李四', '王五', '张三', '赵六']
# 查询'张三'在列表中个数
print(name_list.count('张三'))
# 查询'王五'的索引
print(name_list.index('王五'))
# 注意: index 方法如果查询的元素不存在会报错
# print(name_list.index('周一')) # 报错:ValueError: '周一' is not in list
# 查询列表中元素个数
print(len(name_list))
列表的遍历
for 循环遍历
使用 for
循环可以遍历列表中的所有元素,格式为 for 元素名 in 列表:
。
while 循环遍历
使用 while
循环同样可以遍历列表中的元素,核心思想是利用一个索引变量作为列表的索引,使用 while
循环控制。
示例:
# 遍历列表
name_list = ['张三', '李四', '王五']
# 使用 for 循环遍历
for element in name_list:
print(element)
print('-----------------------------')
# 使用 while 循环遍历(前提是要有索引)
# 核心思想:利用 while 中的变量作为列表的索引使用
# 1. 定义初始变量
index = 0
# 2. 条件判断
while index < len(name_list):
# 3. 循环体
# 根据索引去列表中找对应的元素并打印
element = name_list[index]
print(element)
# 4. 条件控制
index += 1
附:
添加元素相关单词:
append:附加
extend:扩展
insert:插入
查询元素相关单词:
count: 计数
index: 索引
length: 长度
删除元素相关单词
delete:删除
pop : 弹出
remove:移除
clear: 清空