一、数据容器
数据容器含义:
能够存储多个元素的数据类型,叫数据容器
常见的数据容器:
列表(list) 元组(tuple) 字符串(str) 集合(set) 字典(dict)
各个容器符号
列表: 中括号 [] 举例: [元素1,元素2,元素3,...]
元组: 小括号 () 举例: (元素1,元素2,元素3,...)
字符串: 引号 '内容'/"内容"/'''内容'''/"""内容"""
注意: 在字符串中每个字符都是一个元素
集合: 大括号 {} 举例: {元素1,元素2,元素3,...}
字典: 大括号 {} 举例: {key:value , key:value ,...}
注意: 每个键值对是一个元素
二、方法和函数对比
方法:
本质是一个函数,只是这个函数放到class xxx 类中
注意:
可以说方法一定是一个函数,但是不能说函数一定是一个方法
示例:
# 生成随机数
# 自己不会写这个功能,而且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就是一个函数
"""
三、列表的定义
定义:
序列是Python中最基本的数据结构。
序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
空列表:
列表名=[] 或者 列表名=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开始,从右到左,依次递减
根据下标索引查找对应元素格式:
列表名[索引]
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
如下所示:
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
[‘Hi!’] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print x, | 1 2 3 | 迭代 |
Python列表截取方法:
Python 表达式 | 结果 | 描述 |
---|---|---|
L[2] | ‘Taobao’ | 读取列表中第三个元素 |
L[-2] | ‘Runoob’ | 读取列表中倒数第二个元素 |
L[1:] | [‘Runoob’, ‘Taobao’] | 从第二个元素开始截取列表 |
示例:
# 下标索引: 就是列表中每个元素的编号
# 需求1: 定义列表存储5个学生姓名
name_list = ['张三', '李四', '王五', '赵六', '田七']
# 需求2:查找第一个列表中第一个姓名
name = name_list[0]
print(name)
# 当然也可以使用负索引查找
print(name_list[-5])
# 需求3: 查找最后一个姓名
print(name_list[-1])
# 当然也可以使用正索引查找
print(name_list[4])
# 注意: 因为正索引从0开始数,有时候很容易数错,如果访问了不存在的索引就会包索引越界异常
# print(name_list[5]) # IndexError: list index out of range
# 需求4: 查找索引为2位置的姓名
print(name_list[2])
五、列表的增删改查
增:添加元素
列表名.append(元素): 把指定元素追加到列表中
列表名.extend(容器): 把指定容器中每个元素取出,依次放到当前列表中
列表名.insert(索引,元素): 把指定元素插入到列表指定索引位置
删:删除元素
del 列表名[索引]: 把指定索引位置的元素删除
列表名.pop(索引): 把指定索引位置的元素删除
列表名.remove(元素): 把指定元素直接删除
列表名.clear() : 清空当前列表
del 列表名: 删除当前列表
改:修改元素
列表名[索引] = 新元素
查:查找元素
列表名[索引]: 查找指定索引位置上的元素
列表名.count(元素): 查找指定元素在列表中出现的次数
列表名.index(元素): 查找指定元素在列表中的索引位置 注意: 如果不存在就报错
len(列表名): 查询当前列表中所有元素的总个数
示例:
"""
因为方法名都是见名知意的,所以建议同学们记重点单词
添加元素相关单词:
append:附加
extend:扩展
insert:插入
查询元素相关单词:
count: 计数
index: 索引
length: 长度
删除元素相关单词
delete:删除
pop : 弹出
remove:移除
clear: 清空
"""
# 1.演示添加功能
# 需求:已知空列表,要求使用三种方式添加元素到列表中
name_list = []
# 需求:依次添加'张三','李四'到列表中
name_list.append('张三')
name_list.append('张三')
name_list.append('李四')
print(name_list)
# 需求: 一次性添加'王五','赵六','田七'到列表中
name_list.extend(['王五', '赵六', '田七'])
print(name_list)
# 需求: 把'周八'直接插入到第一个位置
name_list.insert(0, '周八')
print(name_list)
# 2.演示查询功能
# 需求: 查询'张三'在列表中个数
print(name_list.count('张三'))
# 需求: 查询'周八'的索引
print(name_list.index('周八'))
# 注意: index方法如果查询的元素不存在会报错
# print(name_list.index('周一'))# ValueError: '周一' is not in list
# 需求: 查询列表中元素个数
print(len(name_list))
# 需求: 查询最后元素内容
print(name_list[-1])
# 3.演示修改功能
# 需求: 修改最后元素内容为'钱九'
name_list[-1] = '钱九'
# 再次查看最后一个元素内容
print(name_list[-1])
# 4.演示删除功能
# 删除第一个元素
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)
# 删除name_list这个列表
del name_list
print(name_list) # 报错说明删除成功,NameError: name 'name_list' is not defined
六、列表的遍历
1.for循环遍历
for 元素名 in 列表:
操作元素
2.while循环遍历
核心思想: 利用while变量作为列表的索引使用
index = 0
while index < len(列表):
元素名 = 列表[index]
操作元素
index+=1
3.对比
while循环和for循环,都是循环语句,但细节不同:
在循环控制上:
while循环可以自定循环条件,并自行控制
for循环不可以自定循环条件,只可以一个个从容器内取出数据
在无限循环上:
while循环可以通过条件控制做到无限循环
for循环理论上不可以,因为被遍历的容器容量不是无限的
在使用场景上:
while循环适用于任何想要循环的场景
for循环适用于,遍历数据容器的场景或简单的固定次数循环场景
示例:
# 分别使用while循环和for循环遍历列表
# 定义非空列表
name_list = ['张三', '李四', '王五']
# while循环遍历(前提该容器要有索引)
# 核心思想: 利用while中变量作为列表的索引使用
# 1.定义初始变量
index = 0
# 2.条件判断
while index < 3:
# 3.循环体
# 根据索引去列表中找对应的元素并打印
element = name_list[index]
print(element)
# 4.条件控制
index += 1
print('-----------------------------')
# for循环遍历
for element in name_list:
print(element)
七、Python列表函数&方法
列表包含以下方法
序号 | 方法 | 作用 |
---|---|---|
1 | list.append(obj) | 在列表末尾添加新的对象 |
2 | list.count(obj) | 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) | 将对象插入列表 |
6 | list.pop([index=-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) | 移除列表中某个值的第一个匹配项 |
8 | list.reverse() | 反向列表中元素 |
9 | list.sort | (cmp=None, key=None, reverse=False) |
包含以下函数:
序号 | 函数 | 作用 |
---|---|---|
1 | cmp(list1, list2) | 比较两个列表的元素 |
2 | len(list) | 列表元素个数 |
3 | max(list) | 返回列表元素最大值 |
4 | min(list) | 返回列表元素最小值 |
5 | list(seq) | 将元组转换为列表 |