日常python语法细节汇总

1,range

range(start, stop, step),例如:range(10, 0, -1) 10开始步长减1 到0 的倒序列表

2,sum、max、min、index

列表求和:sum(list)、列表中的最大值:max(list)、列表中的最小值:min(list)、列表中某个值的索引:list.index(value),需要注意:多个相同最大值时,index() 仅返回第一个索引

例如:

  1. 1,求列表中的最大值
  2. 2,列表中最大值的索引

3,enumerate()

enumerate() 是 Python 内置函数,专门用于在遍历可迭代对象(列表、字符串、元组等)时,同时获取元素的「索引」和「对应的值」,无需手动定义计数器变量(比如 i = 0 然后 i += 1

for index, value in enumerate(iterable, start=0): # 循环体操作

# 1. 定义一个普通列表
fruit_list = ["苹果", "香蕉", "橙子", "葡萄", "西瓜"]

# 2. 使用 enumerate() + for 循环遍历
print("列表索引 + 元素:")
for idx, fruit in enumerate(fruit_list):
# idx 是索引(默认从0开始),fruit 是对应元素
print(f"索引:{idx},元素:{fruit}")

4,type

  1. 基础数据类型(最核心,入门必掌握)
  2. 数值类型:int(整数)、float(浮点数)、complex(复数)
  3. 字符串类型:str(字符串)
  4. 布尔类型:bool(布尔值)
  5. 空类型:NoneType(空值 None)
  6. 容器数据类型(存储多个元素,高频使用)
  7. 序列型容器(有序、可索引):list(列表)、tuple(元组)
  8. 键值对容器(无序、键值映射):dict(字典)
  9. 无序集合容器(无重复元素):set(集合)、frozenset(冻结集合)
  10. 其他常用内置核心类型(日常开发高频,基础延伸)
  11. 范围类型:range(范围对象)
  12. 字节类型:bytes(不可变字节串)、bytearray(可变字节数组)
  13. 函数 / 方法类型:function(自定义函数)、builtin_function_or_method(内置函数 / 方法)
  14. 生成器类型:generator(生成器对象)

5,sorted

sorted(iterable, key=None, reverse=False)

key 参数接收一个函数,key 函数的要求:接收一个参数(对应可迭代对象中的单个元素),返回一个用于排序的依据值。

6,python中字符串和数字类型不能直接相加,会报语法错误;python中数据类型定义后可以修改,这点和js相同

7,字典的默认值操作(避免 KeyError 报错)

当访问字典中不存在的键时,直接访问会报错,推荐使用 get() 方法和 setdefault() 方法处理:

  1. dict.get(key, default=None):获取键对应的值,键不存在时返回默认值(不修改原字典)
  2. dict.setdefault(key, default=None):获取键对应的值,键不存在时,先添加「键:默认值」到字典,再返回默认值

8,匿名函数

例如:

lambda x: x[0]是 Python 中的匿名函数(由lambda关键字定义),它的核心功能是:接收一个可索引的输入参数x,返回x中索引为 0 的元素(即x的第一个元素,Python 索引从 0 开始)

常见用于:对包含多个元组的列表,按元组的第一个元素进行排序

# 原始列表(每个元素是一个二元元组)
student_scores = [("Tom", 90), ("Alice", 95), ("Bob", 88)]

# 按元组的第一个元素(姓名)进行字典序排序,key指定为lambda x: x[0]
student_scores_sorted = sorted(student_scores, key=lambda x: x[0])

print(student_scores_sorted)
# 输出:[('Alice', 95), ('Bob', 88), ('Tom', 90)]


9,合并

字典合并:

| 运算符:创建新字典(不修改原字典)

  1. 功能:将两个或多个字典合并,返回一个新的字典,原字典保持不变。
  2. 冲突处理:如果存在重复键,右侧字典的键值对会覆盖左侧字典的(从左到右优先级依次提升)。
dict1 = {"name": "Tom", "age": 18}
dict2 = {"age": 19, "score": 90}

# 合并两个字典(创建新字典)
new_dict = dict1 | dict2

|= 运算符:原地合并(修改左侧原字典)

  1. 功能:将右侧字典的键值对合并到左侧字典中,直接修改左侧原字典,无返回值(或返回修改后的左侧字典)。
  2. 冲突处理:重复键同样由右侧字典的值覆盖左侧字典的值。

字典解包 **

这是 Python 3.5 及以上版本支持的经典合并方式,灵活性高,支持多字典合并,同样创建新字典。

用法说明

  1. ** 解包字典(将字典拆分为键值对参数),再用 {} 包裹重新组装成新字典。
  2. 冲突处理:重复键时,后解包的字典会覆盖先解包的字典(与|运算符优先级一致)。
dict1 = {"name": "Tom", "age": 18}
dict2 = {"age": 19, "score": 90}

# 合并两个字典(创建新字典)
new_dict = {**dict1, **dict2}

dict.update() 方法(原地合并)

这是 Python 所有版本都兼容的传统方法,核心是原地修改字典,无返回值(返回None)。

用法说明

  1. 调用 dict1.update(dict2),将dict2的键值对合并到dict1中,直接修改dict1dict2保持不变。
  2. 冲突处理:重复键时,dict2的值覆盖dict1的值。
  3. 扩展:update() 还支持传入键值对参数(如dict1.update(score=90, gender="male"))。


10,JSON 文件处理(json 模块)

Python 中通过 json 模块实现序列化(Python 对象→JSON 字符串)和反序列化(JSON 字符串→Python 对象)

  1. json.dumps: 序列化(对象变为字符串)
  2. json.loads:反序列化(字符串变为对象)
import json

# 原始Python对象(字典/列表)
data = {"name": "Tom", "age": 18, "hobbies": ["reading", "running"]}

# 1. 序列化:Python对象→JSON文件
with open("data.json", mode="w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4) # ensure_ascii=False 保留中文,indent=4 格式化缩进

# 2. 反序列化:JSON文件→Python对象
with open("data.json", mode="r", encoding="utf-8") as f:
loaded_data = json.load(f)
print(loaded_data["name"]) # Tom

11,aiohttp (第三方库,需要pip install aiohttp)

import asyncio
import aiohttp

async def get_url_content(session, url):
async with session.get(url) as response:
print(f"获取 {url} 内容完成,状态码:{response.status}")
return await response.text()

async def main():
url1 = "https://www.baidu.com"
url2 = "https://www.qq.com"

# 创建aiohttp会话(推荐,复用连接,提升效率)
async with aiohttp.ClientSession() as session:
content1, content2 = await asyncio.gather(
get_url_content(session, url1),
get_url_content(session, url2)
)

if __name__ == "__main__":
asyncio.run(main())

12,print

无论你print()什么对象(字典、Series、列表、自定义类等),底层都会执行以下「3 步核心流程」:

步骤1:print(对象) 被调用

步骤2:Python 自动调用该对象的「字符串表示方法」,获取一个格式化后的字符串

步骤3:print() 把这个字符串原样输出到控制台

13,numpy中shape

  1. 一维数组shape:(n,) → 单元素元组,n 为一维元素个数;
  2. 二维数组shape:(行数, 列数) → 二元元组,对应矩阵的行列大小;
  3. 三维数组shape:(堆叠个数, 行数, 列数) → 三元元组,对应多个二维数组的堆叠及单个二维数组的行列大小;
  4. shape返回结果始终是元组,维度数与元组长度一致。