Python学习笔记

Python


一、lambda

语法

python 复制代码
lambda 参数: 返回值

案例

python 复制代码
# 两数相加
add = lambda x, y: x + y
print(add(3, 5))  # 8

# 排序时指定字段
students = [{"name": "张三", "age": 25}, {"name": "李四", "age": 20}]
sorted(students, key=lambda s: s["age"])

# 过滤
list(filter(lambda x: x > 0, [-1, 2, -3, 4]))

# 映射
list(map(lambda x: x * 2, [1, 2, 3]))

注意

  • lambda 只能写单行表达式
  • 多行逻辑用 def

二、列表推导式

语法

python 复制代码
[表达式 for 变量 in 可迭代对象]
[表达式 for 变量 in 可迭代对象 if 条件]

案例

python 复制代码
# 基础
arr = [1, 2, 3]
result = [a * 2 for a in arr]
print(result)  # [2, 4, 6]

# 带条件
result = [a for a in arr if a > 1]
print(result)  # [2, 3]

# 生成字典
arra = [1, 3, 4]
arrb = [{"role": 1, "age": a} for a in arra]
print(arrb)
# [{"role": 1, "age": 1}, {"role": 1, "age": 3}, {"role": 1, "age": 4}]

# 嵌套循环
result = [f"{x}{y}" for x in ["A", "B"] for y in [1, 2]]
print(result)  # ["A1", "A2", "B1", "B2"]

# 相当于:
result = []
for x in ["A", "B"]:
    for y in [1, 2]:
        result.append(f"{x}{y}")

# 三元表达式配合
result = ["偶数" if a % 2 == 0 else "奇数" for a in range(5)]
print(result)  # ["偶数", "奇数", "偶数", "奇数", "偶数"]

for 循环对比

python 复制代码
# for 循环
result = []
for a in arr:
    if a > 1:
        result.append(a * 2)

# 列表推导式(等价)
result = [a * 2 for a in arr if a > 1]

三、三目表达式(三元运算符)

语法

python 复制代码
# 如果条件成立取 a,否则取 b
值 = a if 条件 else b

案例

python 复制代码
# 基础
age = 20
label = "成年人" if age >= 18 else "未成年人"
print(label)  # 成年人

# 赋值
x = 10
y = "正数" if x > 0 else "负数或零"

# 在列表推导式中使用
nums = [1, 2, 3, 4, 5]
result = ["偶数" if n % 2 == 0 else "奇数" for n in nums]
print(result)  # ["奇数", "偶数", "奇数", "偶数", "奇数"]

# 嵌套(不推荐,可读性差)
score = 85
level = "优秀" if score >= 90 else "良好" if score >= 80 else "及格" if score >= 60 else "不及格"

# 相当于
if score >= 90:
    level = "优秀"
elif score >= 80:
    level = "良好"
elif score >= 60:
    level = "及格"
else:
    level = "不及格"

其他语言对比

python 复制代码
# Java / JavaScript
var result = condition ? value1 : value2;

# Python
result = value1 if condition else value2

四、双目表达式

双目的意思是需要两个操作数。Python 常用的双目运算:

算术双目

python 复制代码
a + b    # 加
a - b    # 减
a * b    # 乘
a / b    # 除
a ** b   # 幂运算(a 的 b 次方)
a // b   # 整除
a % b    # 取余

比较双目

python 复制代码
a == b   # 等于
a != b   # 不等于
a > b    # 大于
a < b    # 小于
a >= b   # 大于等于
a <= b   # 小于等于
a is b   # 是同一个对象
a in b   # a 在 b 里面

逻辑双目

python 复制代码
a and b  # 且
a or b   # 或

赋值双目

python 复制代码
a += 1   # 等价 a = a + 1
a -= 1   # 等价 a = a - 1
a *= 2   # 等价 a = a * 2
a /= 2   # 等价 a = a / 2

五、方法重写

语法

python 复制代码
class 父类:
    def 方法名(self):
        ...

class 子类(父类):
    def 方法名(self):   # 同名方法覆盖父类
        ...

案例

python 复制代码
class Animal:
    def speak(self):
        return "..."

class Dog(Animal):
    def speak(self):
        return "汪汪"

class Cat(Animal):
    def speak(self):
        return "喵喵"

print(Dog().speak())  # 汪汪
print(Cat().speak())  # 喵喵

# 调用父类方法
class Child(Animal):
    def speak(self):
        return super().speak() + " 再说一遍"

六、enumerate

语法

python 复制代码
enumerate(可迭代对象, start=0)

案例

python 复制代码
# 基础
fruits = ["苹果", "香蕉", "西瓜"]
for i, fruit in enumerate(fruits):
    print(i, fruit)
# 0 苹果
# 1 香蕉
# 2 西瓜

# 指定起始
for i, fruit in enumerate(fruits, start=1):
    print(f"第{i}个: {fruit}")

# 配合列表修改
for i, name in enumerate(names):
    if name == "李四":
        names[i] = "修改后的名字"

七、Callable 类型注解

语法

python 复制代码
from collections.abc import Callable, Iterator

# 接收一个函数作为参数
def execute(func: Callable[[int], str], value: int):
    return func(value)

# 注解说明:
# Callable[[参数类型], 返回值类型]
# Callable[[int, str], bool]  → 接收 (int, str) 返回 bool

# 返回生成器
def stream(func: Callable[[str], Iterator[str]]):
    ...

八、zip

语法

python 复制代码
zip(可迭代对象1, 可迭代对象2, ...)

案例

python 复制代码
names = ["张三", "李四", "王五"]
scores = [90, 85, 92]

# 合并两个列表
result = list(zip(names, scores))
print(result)  # [("张三", 90), ("李四", 85), ("王五", 92)]

# 解包
for name, score in zip(names, scores):
    print(name, score)

# 配合 sorted 按第二个列表排序
pairs = list(zip(names, scores))
pairs.sort(key=lambda x: x[1], reverse=True)
print(pairs)  # 按分数从高到低排序
相关推荐
Amazing_Cacao3 小时前
CFCA精品可可产区风土体系(亚洲):彻底拒绝应试背诵,将感官复核作为检验真实物理差异的唯一铁律
学习
tkevinjd4 小时前
MiniCode 项目详解6:原项目控制系统的10个缺陷(已修复)
python·llm·agent
dNGUZ7UGj5 小时前
10分钟完成第一个Python小游戏
python·django
没有梦想的咸鱼185-1037-16635 小时前
AI-Python机器学习与深度学习技术:CNN/Transformer/扩散模型、SHAP可解释及Hermes智能体自动化
人工智能·python·深度学习·机器学习·chatgpt·cnn·transformer
霸道流氓气质6 小时前
SpringBoot中通用工具类库(Utils)封装与使用实践
spring boot·后端·python
谙弆悕博士7 小时前
信息系统项目管理师教程(第4版)笔记——第 2 章 信息技术发展
笔记·职场和发展·软考高级·软考·高项·项目经理
Draina7 小时前
CBC填充预言攻击-CBC Padding Oracle Crypto Attack
python·安全·web安全·网络安全·密码学·安全性测试
Angel Q.8 小时前
特征提取 | DINO 到 DINOv3
图像处理·python
不如语冰8 小时前
AI大模型入门-pytorch-张量2 tensor创建
python
wp123_18 小时前
【硬件选型笔记】TONEVEE MVL4020-1R2M 与Coilcraft XAL4020-122MEC 大电流功率电感参数深度解析
笔记