Python组蓝桥杯备赛超详细知识点总结笔记_语言基础篇1—基础数据结构
一、列表
1. 创建列表
lst = ['a', 'b', 'c']
2. 核心方法
| 操作类型 | 方法 | 功能描述 |
|---|---|---|
| 插入 | a.append(x) | 尾插元素 x(可嵌套可迭代对象) |
a.extend(x) | 尾插可迭代对象 x 的所有元素 | |
a.insert(i, x) | 在索引 i 处插入 x | |
| 删除 | del a[i] | 删除索引 i 处元素 |
a.pop(i) | 删除索引 i 处元素并返回(默认尾删) | |
a.remove(x) | 删除首个匹配 x 的元素 | |
a.clear() | 清空列表(无元素时报 ValueError) | |
| 其他 | a.reverse() | 翻转列表 |
a.count(x) | 统计 x 出现次数 | |
a.index(x, s, e) | 查找 x 首次出现索引(可指定 s/e 范围) | |
len(a) | 统计列表长度 |
3. 列表的遍历
(1)元素遍历
for x in a:
# 遍历操作代码
(2)下标遍历
for _ in range(len(a)):
# 遍历操作代码,通过下标 a[_] 访问元素
(3)enumerate 遍历
- 同时获取元素的下标与对应元素
enumerate(lst)可将列表转化为[(0, 'x1'), (1, 'x2'), …]形式start参数可指定下标的起始值,默认为 0。
for i, x in enumerate(a, start=0):
# i 为下标,x 为对应元素,遍历操作代码
(4)应用场景
-
① 计算列表元素和:
ans = ans + x -
② 计算列表元素平方和:
ans = ans + x * x -
③ 计算列表元素平均值:
ans / len(a)(ans 为列表元素和) -
④ 字符串连接:
ans = ans + x + ''(x 为字符串类型元素)
4. range 生成数字列表
在 Python 3 中,range 生成的是可迭代对象,需用 list() 转换为列表。
a = list(range(start, stop, step))
5. 列表操作符
-
① 列表复制:
b = a * 3,例如a = [1,2],则b = [1,2,1,2,1,2] -
② 列表拼接:
c = a + b,例如a = [1,2]、b = ['a','b'],则c = [1,2,'a','b']
6. 列表内置函数
-
(1)
sum(a) -
(2)
max(a) / min(a) -
(3)
len(a)
7. 列表解析式
(1)基本语法
-
格式:
[expression for member in iterable](其中,expression是表达式,member是可迭代对象中的元素,iterable是可迭代对象) -
示例:
a = [x ** 2 for x in range(4)] # 计算 0 到 3 的平方,结果为 [0,1,4,9]
(2)筛选操作
-
格式:
[e for m in it if 条件](增加筛选条件,只保留满足条件的元素) -
示例:
a = [x ** 2 for x in range(11) if x % 2 == 0] # 计算 0 到 10 中偶数的平方,结果为 [0,4,16,36,64,100]
8. 列表的复制
-
(1)切片复制:
b = a[:] -
(2)
copy方法:b = a.copy()
二、字符串
1. 常用方法
| 类型 | 方法 | 功能描述 |
|---|---|---|
判断(bool) | s.isalnum()/s.isalpha()/s.isdigit() | 字母数字 / 字母中文 / 全数字 |
s.islower()/s.isupper()/s.isspace() | 全小写 / 全大写 / 仅空白字符 | |
s.istitle() | 首字母大写 | |
| 转换 | s.title()/s.upper()/s.lower() | 首字母大写 / 全大写 / 全小写 |
s.swapcase() | 大小写互换 | |
ord(s)/chr(x) | 字符转 Unicode/Unicode 转字符 | |
| 空白处理 | s.strip(x)/s.lstrip(x)/s.rstrip(x) | 删除两侧 / 左侧 / 右侧指定字符 x(默认空格) |
| 替换对齐 | s.replace(old, new, count) | 替换子串(count 指定次数,默认全换) |
s.rjust/wjust/ljust/center(width, char) | 右 / 左 / 居中对齐,指定填充字符 | |
s.zfill(width) | 右对齐,左侧补 0 到 width 长度 | |
| 查找 | s.count(sub, s, e) | 统计子串出现次数(指定 s/e 范围) |
s.find(sub, s, e)/s.rfind(sub, s, e) | 查找首次 / 最后子串索引(未找到返 - 1) | |
s.index(sub, s, e)/s.rindex(sub, s, e) | 同上(未找到报错) | |
s.startswith(sub, s, e)/s.endswith(sub, s, e) | 判断是否以子串开头 / 结尾 | |
| 转列表 | list(s) | 按字符拆分为列表 |
| 列表转字符串 | "".join(lst) | 连接列表字符为字符串 |
2. format 格式化
(1){ } 占位
print("我是{}".format(name)) # name 为要填充的变量
(2){0}, {1} 索引占位
通过索引指定填充的变量顺序,{0} 对应 format 中第一个参数,{1} 对应第二个参数,以此类推。
print("我是{0},{1}岁".format(name, age)) # name 对应 {0},age 对应 {1}
(3){name}, {age} 变量占位
直接在 {} 中写变量名,format 中通过 变量名=值 的形式传递参数。
print("我是{name},{age}岁".format(name="xx", age=xx)) # 需替换 "xx" 和 xx 为实际值
(4)>,< 填充
-
{:char>width}:右对齐,左侧用字符char填充至总宽度为width -
{:char<width}:左对齐,右侧用字符char填充至总宽度为width
示例:
print("{:0>4} {:x<4}".format(25, 25)) # 输出结果为 "0025 25xx"
三、字典
1. 创建字典
(1)直接创建
d = {key1: value1, key2: value2} # key1、key2 为键,value1、value2 为对应的值
(2)dict 创建
d = dict(k1=v1, k2=v2) # k1、k2 为键,v1、v2 为对应的值
(3)二元列表创建
列表套列表、列表套元组、元组套列表、元组套元组的形式均可用。
d = dict([(k1, v1), (k2, v2)]) # (k1, v1)、(k2, v2) 为二元组,也可替换为二元列表
(4)zip 创建
zip语法:zip(sequence1, sequence2, …)- 用法:
- ①将多个序列相同下标的元素组装成元组,结果是可迭代对象
- ②结果可以转换成list,但首次转换后迭代器就为空(一次性)
- 示例:
keys = [k1, k2, …] # 键列表
values = [v1, v2, …] # 值列表
d = dict(list(zip(keys, values))
2. 核心操作
| 操作类型 | 方法 / 语法 | 功能描述 |
|---|---|---|
| 访问 | d[key] | 通过键访问值(key 不存在报 KeyError) |
d.get(key, default) | 通过键访问值(key 不存在返回 default,默认 None) | |
| 添加 | d[new_key] = value | 新增键值对 |
| 修改 | d[key] = new_value | 修改指定键对应的值 |
| 删除 | del d[key] | 删除指定键值对 |
d.pop(key) | 删除指定键值对并返回值(key 不存在报 KeyError) | |
| 判断 | key in d | 判断键是否存在 |
value in d.values() | 判断值是否存在 | |
(key, value) in d.items() | 判断键值对是否存在 | |
| 拷贝 | d.copy() | 复制字典(浅拷贝) |
| 合并 | d1.update(d2) | 将 d2 的键值对合并到 d1(d1 改变,d2 不变) |
3. 遍历字典
①for遍历:for x in d:(获取字典所有key)
②keys():d.keys()(返回dict_keys类型,可进行遍历,也可转列表)
③values():d.values()
④items():for k,v in d.items():
四、集合
1. 集合特性
①元素唯一性
②数据不可变(只能存放数字,字符串,元组)
③无序性
2. 创建集合
①直接创建:s={e1,e2, ...}
②类型转换:s=set(列表/元组)
3. 核心操作
| 操作类型 | 方法 / 语法 | 功能描述 |
|---|---|---|
| 添加 | s.add(x) | 向集合添加单个元素 |
s.update(iterable) | 向集合批量添加可迭代对象中的元素 | |
| 删除 | s.discard(x) | 删除元素 x(x 不存在时不报错) |
s.remove(x) | 删除元素 x(x 不存在时报 KeyError) | |
s.pop() | 随机删除并返回一个元素 | |
s.clear() | 清空集合 | |
| 运算 | S & T / s.intersection(t) | 求交集(S 和 T 共有的元素) |
| `S | T/s.union(t)` | |
S - T / s.difference(t) | 求差集(S 中存在、T 中不存在的元素) | |
S ^ T / s.symmetric_difference(t) | 求对称差集(仅在 S 或仅在 T 中的元素) | |
| 关系判断 | s.issubset(t) | 判断 s 是否是 t 的子集(s 的所有元素都在 t 中) |
s.isuperset(t) | 判断 s 是否是 t 的超集(t 的所有元素都在 s 中) | |
s.isdisjoint(t) | 判断 s 和 t 是否不相交(无共同元素) |
1350

被折叠的 条评论
为什么被折叠?



