python基础

1.1 环境搭建

Python 安装

IDE 推荐

IDE 特点 适用场景
PyCharm 功能强大、专业 大型项目、企业开发
VS Code 轻量、扩展丰富 轻量开发、多种语言
Thonny 简单、内置新手友好 初学者入门

第一个程序

python 复制代码
print("Hello, World!")

1.2 基础语法

注释

python 复制代码
# 这是单行注释

"""
这是多行注释
可以写多行内容
"""

'''
也可以用单引号
'''

变量与数据类型

python 复制代码
# 变量赋值(不需要声明类型)
name = "Alice"        # 字符串 str
age = 25              # 整数 int
height = 1.68         # 浮点数 float
is_student = True     # 布尔值 bool

# 查看数据类型
type(name)            # <class 'str'>

常用数据类型

类型 示例 说明
int 10, -5, 0 整数
float 3.14, -0.5 浮点数
str "hello", 'world' 字符串
bool True, False 布尔值
None None 空值

类型转换

python 复制代码
# 常见类型转换
int("123")       # 字符串转整数
int(3.14)        # 浮点数转整数(截断)
float("3.14")    # 字符串转浮点数
str(123)         # 整数转字符串
bool(0)          # 转布尔值(0/空字符串/None 为 False)
bool(1)          # 非零值为 True

# 用户输入(返回字符串)
age = int(input("请输入年龄:"))  # input 返回字符串,需要转换

运算符

python 复制代码
# 算术运算符
+ - * /           # 加减乘除
//                # 整除(向下取整)
%                 # 取余
**                # 幂运算(2**3 = 8)
divmod(10, 3)     # 同时返回整除结果和余数 (3, 1)

# 比较运算符(返回 True 或 False)
== != > < >= <=   # 等于、不等于、大小比较

# 逻辑运算符(注意短路特性)
and or not        # 与、或、非
0 and 5           # 返回 0(短路:左边为 False)
5 or 3            # 返回 5(短路:左边为 True)

# 赋值运算符
= += -= *= /=     # 基本赋值与复合赋值
//= %= **=        # 整除赋值、取余赋值、幂赋值

字符串操作

python 复制代码
# 字符串创建
s1 = "hello"
s2 = 'world'
s3 = """多行
字符串"""

# 字符串拼接
"hello" + "world"          # "helloworld"
"hello" * 3               # "hellohellohello"

# 字符串格式化
name = "Alice"
age = 25
f"我叫{name},今年{age}岁"           # f-string(推荐)
"我叫{},今年{}岁".format(name, age)  # format 方法
"我叫%s,今年%d岁" % (name, age)      # % 格式化(了解即可)

# 字符串切片
s = "Hello World"
s[0]            # 'H' 第一个字符
s[-1]           # 'd' 最后一个字符
s[0:5]          # 'Hello' 切片(前5个)
s[::2]          # 'HloWr' 步长2
s[::-1]         # 'dlroW olleH' 反转

# 字符串常用方法
"hello".upper()           # 'HELLO' 转大写
"hello".lower()           # 'hello' 转小写
"hello".replace("l", "L") # 'heLLo' 替换
"hello".split("l")        # ['he', '', 'o'] 分割
"  hello  ".strip()       # 'hello' 去除两端空格
"hello".find("ll")        # 2 查找位置(找不到返回-1)
"hello".count("l")        # 2 计数
"hello".startswith("he")  # True 是否以某字符串开头
"hello".endswith("lo")    # True 是否以某字符串结尾
"hello".isdigit()         # False 是否为数字
"hello".isalpha()         # True 是否为字母
len("hello")              # 5 长度

# 字符串判断
s = "123"
s.isdigit()       # True 是否全是数字
s.isalpha()       # False 是否全是字母
s.isalnum()       # True 是否是数字或字母
s.isspace()       # False 是否全是空格
s.isupper()       # False 是否全是大写
s.islower()       # True 是否全是小写

数字处理

python 复制代码
# 常用数学函数
abs(-5)           # 5 绝对值
round(3.14159, 2) # 3.14 四舍五入(保留2位)
max(1, 5, 3)      # 5 最大值
min(1, 5, 3)      # 1 最小值
pow(2, 3)         # 8 幂运算

# 数学模块
import math
math.floor(3.7)   # 3 向下取整
math.ceil(3.2)    # 4 向上取整
math.sqrt(16)     # 4.0 平方根
math.pi           # 3.141592653589793 圆周率
math.e            # 2.718281828459045 自然常数

# 随机数
import random
random.randint(1, 10)     # 1-10 之间的随机整数
random.random()           # 0-1 之间的随机浮点数
random.choice(["a", "b"]) # 随机选择
random.shuffle([1,2,3])   # 打乱顺序

1.3 控制流程

条件语句

python 复制代码
if 条件1:
    # 条件1为True时执行
    pass
elif 条件2:
    # 条件2为True时执行
    pass
else:
    # 所有条件都不满足时执行
    pass

三元表达式

python 复制代码
# 条件为真时的值 if 条件 else 条件为假时的值
age = 20
status = "成年" if age >= 18 else "未成年"

pass 语句

python 复制代码
# pass 是空语句,不做任何事情,用于占位
if True:
    pass  # 暂时不写代码,先占个位置
else:
    print("条件为假")

循环语句

python 复制代码
# for 循环 - 遍历序列
for i in range(5):         # 0,1,2,3,4
    print(i)

fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
    print(fruit)

# while 循环 - 条件循环
count = 0
while count < 5:
    print(count)
    count += 1

# 循环控制
break    # 跳出循环
continue # 跳过本次循环

# for-else 结构(循环正常结束才执行 else)
for i in range(5):
    if i == 10:
        break
else:
    print("循环正常结束")   # 会执行

# while-else 结构
count = 0
while count < 3:
    count += 1
else:
    print("while 循环正常结束")

1.4 数据结构

列表(List)

python 复制代码
# 创建列表
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", True, 3.14]
empty = []              # 空列表
range_list = list(range(5))  # [0, 1, 2, 3, 4]

# 索引与切片
numbers[0]      # 第一个元素
numbers[-1]     # 最后一个元素
numbers[1:4]    # 切片:获取第2到第4个元素
numbers[::2]    # 步长:隔一个取一个
numbers[::-1]   # 反转列表

# 添加元素
numbers.append(6)      # 末尾添加
numbers.insert(0, 0)  # 指定位置插入
numbers.extend([7,8])  # 合并列表
numbers += [9, 10]     # 效果同 extend

# 删除元素
numbers.remove(3)      # 删除第一个出现的值
numbers.pop()          # 删除末尾并返回
numbers.pop(0)         # 删除指定位置并返回
del numbers[0]         # 按索引删除
numbers.clear()        # 清空列表

# 查找与统计
numbers.index(3)       # 查找元素位置(不存在报错)
numbers.count(3)       # 统计元素出现次数
3 in numbers           # 判断元素是否存在

# 其他操作
len(numbers)           # 长度
sorted(numbers)        # 排序(返回新列表)
numbers.sort()         # 原地排序
numbers.reverse()      # 原地反转
numbers.copy()         # 浅拷贝

# 列表推导式(重要!)
squares = [x**2 for x in range(5)]      # [0, 1, 4, 9, 16]
evens = [x for x in range(10) if x % 2 == 0]  # [0, 2, 4, 6, 8]
matrix = [[i*j for j in range(3)] for i in range(3)]  # 二维列表

元组(Tuple)

python 复制代码
# 创建元组(不可变)
point = (3, 4)
colors = ("红", "绿", "蓝")
empty = ()              # 空元组
single = (42,)          # 单元素元组需要逗号
single = (42)           # 这是整数,不是元组

# tuple 可以从列表或其他可迭代对象创建
t = tuple([1, 2, 3])    # (1, 2, 3)
t = tuple("hello")      # ('h', 'e', 'l', 'l', 'o')

# 不可修改,但可以包含可变对象
mixed = (1, [2, 3], 4)
mixed[1].append(5)      # 可以修改列表部分
mixed[1] = [2, 3]       # 报错!不能修改元组元素

# 元组解包
x, y = point            # x=3, y=4
a, b, c = colors        # a="红", b="绿", c="蓝"
x, y = y, x             # 交换变量(不用临时变量)
first, *rest = [1, 2, 3, 4]  # first=1, rest=[2, 3, 4]

# 命名元组(带字段名的元组)
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y)         # 1 2

字典(Dict)

python 复制代码
# 创建字典
person = {"name": "Alice", "age": 25, "city": "北京"}
person = dict(name="Alice", age=25)  # 另一种创建方式
empty = {}                # 空字典
empty = dict()             # 空字典

# 访问与修改
person["name"]             # 获取值(键不存在会报错)
person.get("name")         # 安全获取
person.get("phone", "未知") # 不存在返回默认值
person["phone"] = "123"    # 添加新键值对

# 修改值
person["age"] = 26         # 修改值
person.update({"age": 27, "city": "上海"})  # 批量更新

# 删除
del person["city"]         # 删除键值对
age = person.pop("age")    # 删除并返回值
person.popitem()           # 删除最后一个键值对(Python 3.7+)
person.clear()             # 清空字典

# 查找
"name" in person           # 判断键是否存在
len(person)                # 键值对数量

# 遍历
for key in person:                       # 遍历键
    print(key, person[key])

for key, value in person.items():         # 遍历键值对
    print(f"{key}: {value}")

for value in person.values():             # 遍历值
    print(value)

for key in person.keys():                 # 遍历键
    print(key)

# 字典方法
person.setdefault("gender", "男")          # 不存在则设置,存在则返回原值
person.copy()                             # 浅拷贝

# 字典推导式(重要!)
squares = {x: x**2 for x in range(5)}    # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
d = {k: v for k, v in person.items() if v > 20}  # 条件过滤

集合(Set)

python 复制代码
# 创建集合(无序、不重复)
fruits = {"苹果", "香蕉", "橙子"}
numbers = set([1, 2, 2, 3, 3])  # {1, 2, 3} 自动去重
empty = set()                    # 空集合(不能用 {},那是字典)

# 添加与删除
fruits.add("葡萄")       # 添加一个元素
fruits.update(["西瓜", "草莓"])  # 添加多个元素
fruits.remove("香蕉")    # 删除(不存在会报错 KeyError)
fruits.discard("西瓜")   # 删除(不存在不报错)
fruits.pop()            # 随机删除并返回一个元素

# 集合运算
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
a.union(b)                 # 并集 {1, 2, 3, 4, 5, 6}
a | b                      # 并集(运算符形式)
a.intersection(b)          # 交集 {3, 4}
a & b                      # 交集
a.difference(b)            # 差集 {1, 2}
a - b                      # 差集
a.symmetric_difference(b)  # 对称差集 {1, 2, 5, 6}
a ^ b                      # 对称差集

# 判断关系
a.issubset(b)             # 是否为子集
a.issuperset(b)           # 是否为父集
a.isdisjoint(b)           # 是否无交集

# 集合推导式
squares = {x**2 for x in range(5)}  # {0, 1, 4, 9, 16}

数据结构选择指南

数据结构 特点 适用场景
list 有序、可变、可重复 顺序存储、需要增删
tuple 有序、不可变 固定数据、保护数据
dict 无序、键值对 键快速查找
set 无序、不重复 去重、集合运算

浅拷贝与深拷贝

python 复制代码
# 浅拷贝:只拷贝第一层
a = [[1, 2], [3, 4]]
b = a.copy()        # 或 list(a)、a[:]
b[0][0] = 999       # 修改会影响 a!

# 深拷贝:拷贝所有层级
import copy
c = copy.deepcopy(a)
c[0][0] = 999       # 不会影响 a

# 注意:对于不可变对象(int, str, tuple),浅拷贝足够
x = [1, 2, 3]
y = x.copy()
y[0] = 999          # 不会影响 x

bytes 类型

python 复制代码
# bytes 是不可变的字节序列
b = b"hello"                    # 创建 bytes
b = bytes([104, 101, 108, 108]) # 从整数列表

# 字符串与 bytes 转换
s = "你好"
b = s.encode("utf-8")          # 字符串转 bytes
s = b.decode("utf-8")           # bytes 转字符串

# bytes 切片
b = b"hello world"
b[0:5]                          # b'hello'

1.5 函数

函数定义与调用

python 复制代码
def greet(name):
    """问候函数"""
    return f"你好,{name}!"

# 调用
message = greet("Alice")
print(message)  # 你好,Alice!

文档字符串(docstring)

python 复制代码
def add(a, b):
    """
    加法函数

    参数:
        a: 第一个数
        b: 第二个数

    返回:
        两个数的和
    """
    return a + b

参数类型

python 复制代码
# 位置参数
def add(a, b):
    return a + b
add(1, 2)           # 按位置传递

# 关键字参数
add(a=1, b=2)       # 按名称传递
add(b=2, a=1)       # 顺序可以颠倒

# 默认参数(默认参数必须放在位置参数后面)
def greet(name, greeting="你好"):
    return f"{greeting},{name}!"
greet("Alice")                   # 你好,Alice!
greet("Bob", greeting="Hello")   # Hello,Bob!

# 可变参数 *args **kwargs
def func(*args, **kwargs):
    print(f"位置参数: {args}")
    print(f"关键字参数: {kwargs}")
func(1, 2, 3, name="Alice", age=25)
# 输出:
# 位置参数: (1, 2, 3)
# 关键字参数: {'name': 'Alice', 'age': 25}

# 组合使用
def func(a, b, *args, c=0, **kwargs):
    print(f"必选参数: a={a}, b={b}")
    print(f"可变位置: {args}")
    print(f"默认参数: c={c}")
    print(f"可变关键字: {kwargs}")
func(1, 2, 3, 4, c=10, name="Alice")

返回值

python 复制代码
# 无返回值(返回 None)
def print_hello(name):
    print(f"Hello, {name}")

# 单个返回值
def add(a, b):
    return a + b

# 多个返回值(返回元组)
def divide(a, b):
    quotient = a // b
    remainder = a % b
    return quotient, remainder

q, r = divide(10, 3)  # q=3, r=1
result = divide(10, 3)  # result = (3, 1)

lambda 表达式

python 复制代码
# 匿名函数,适合简短函数
square = lambda x: x ** 2
print(square(5))  # 25

# 多参数 lambda
add = lambda a, b: a + b
print(add(1, 2))  # 3

# 配合内置函数使用
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
evens = list(filter(lambda x: x % 2 == 0, numbers))

# sorted 结合 lambda
students = [("Alice", 25), ("Bob", 20), ("Charlie", 30)]
sorted(students, key=lambda x: x[1])  # 按年龄排序

变量作用域

python 复制代码
x = "全局变量"

def func():
    x = "局部变量"     # 这是局部变量
    print(x)           # 打印局部变量

def func2():
    global x           # 声明使用全局变量
    x = "修改全局变量"

嵌套函数与闭包

python 复制代码
# 嵌套函数
def outer():
    x = "外层变量"
    def inner():
        print(x)       # 可以访问外层变量
    inner()

# 闭包:内层函数记住外层变量
def make_multiplier(n):
    def multiplier(x):
        return x * n
    return multiplier

times_3 = make_multiplier(3)
print(times_3(5))  # 15

递归函数

python 复制代码
# 递归:函数调用自身
def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

# 斐波那契数列
def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

1.6 模块与包

模块基础

python 复制代码
# 创建模块(my_module.py)
# def say_hello(name):
#     return f"Hello, {name}!"

# 导入模块
import my_module
print(my_module.say_hello("Alice"))

# 导入特定函数
from my_module import say_hello
print(say_hello("Bob"))

# 给模块起别名
import my_module as mm

# 给函数起别名
from my_module import say_hello as hi

# 导入所有(不推荐)
from my_module import *

模块特殊变量

python 复制代码
# __name__ 的作用
# 当模块被直接运行时,__name__ == "__main__"
# 当模块被导入时,__name__ == "模块名"

# my_module.py 内容:
def main():
    print("这是主函数")

if __name__ == "__main__":
    main()  # 只有直接运行模块时才执行

# 这是常用模式:防止导入模块时执行测试代码

模块搜索路径

python 复制代码
import sys
print(sys.path)  # 查看模块搜索路径

# 添加自定义路径
import sys
sys.path.append("C:/my_modules")

dir() 和 help()

python 复制代码
# dir() 查看模块/对象的所有属性和方法
import math
print(dir(math))

# help() 查看详细文档
help(math.sqrt)

常用标准模块

python 复制代码
import math        # 数学函数
import random      # 随机数
import datetime    # 日期时间
import json        # JSON 处理
import os          # 操作系统
import sys         # 系统相关
import time        # 时间
import re          # 正则表达式
import collections # 集合容器

pip 包管理

bash 复制代码
# 安装包
pip install 包名
pip install 包名==版本号  # 指定版本

# 卸载包
pip uninstall 包名

# 查看已安装的包
pip list

# 导出依赖
pip freeze > requirements.txt

# 从文件安装
pip install -r requirements.txt

# 升级包
pip install --upgrade 包名

# 查看包信息
pip show 包名

# 国内镜像(加速)
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple

包结构

复制代码
my_package/
├── __init__.py      # 包初始化(可为空)
├── module1.py       # 模块1
├── module2.py       # 模块2
└── sub_package/     # 子包
    ├── __init__.py
    └── module3.py

1.7 文件操作

读取文件

python 复制代码
# 基本读取
with open("example.txt", "r", encoding="utf-8") as f:
    content = f.read()        # 读取全部内容
    print(content)

# 按行读取
with open("example.txt", "r", encoding="utf-8") as f:
    for line in f:           # 迭代器方式(推荐大文件)
        print(line.strip())

# 读取所有行到列表
with open("example.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()    # 读取所有行到列表

# 读取单行
with open("example.txt", "r", encoding="utf-8") as f:
    first_line = f.readline()

# 指定读取字节数
with open("example.txt", "r", encoding="utf-8") as f:
    content = f.read(100)    # 读取前100个字符

写入文件

python 复制代码
# 写入(覆盖)
with open("output.txt", "w", encoding="utf-8") as f:
    f.write("Hello, World!\n")
    f.write("第二行")

# 追加
with open("output.txt", "a", encoding="utf-8") as f:
    f.write("\n追加的内容")

# 写入多行
lines = ["第一行\n", "第二行\n", "第三行"]
with open("output.txt", "w", encoding="utf-8") as f:
    f.writelines(lines)

文件操作模式

模式 说明
r 只读(默认),文件不存在会报错
w 只写(覆盖),文件不存在会自动创建
a 追加,文件不存在会自动创建
r+ 读写,文件不存在会报错
w+ 读写(覆盖),文件不存在会自动创建
a+ 追加读写,文件不存在会自动创建
b 二进制模式(可与以上模式组合)

二进制文件

python 复制代码
# 读取图片等二进制文件
with open("image.png", "rb") as f:
    data = f.read()

# 写入二进制文件
with open("output.png", "wb") as f:
    f.write(data)

JSON 文件

python 复制代码
import json

# 写入 JSON
data = {"name": "Alice", "age": 25, "scores": [90, 85, 88]}
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# 读取 JSON
with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)
    print(data["name"])

# 字符串与 JSON 互转
json_str = json.dumps(data)         # dict -> str
data = json.loads(json_str)         # str -> dict

路径处理

python 复制代码
import os
from pathlib import Path

# os 模块(传统方式)
os.path.join("dir", "file.txt")
os.path.exists("file.txt")
os.path.isfile("file.txt")
os.path.isdir("dir")
os.path.dirname("path/to/file.txt")
os.path.basename("path/to/file.txt")
os.path.getsize("file.txt")        # 文件大小
os.path.split("path/to/file.txt")  # 分离目录和文件名

# pathlib 模块(推荐,更直观)
p = Path("path/to/file.txt")
p.parent             # 父目录 Path('path/to')
p.name               # 文件名 'file.txt'
p.stem               # 不带扩展名的文件名 'file'
p.suffix             # 扩展名 '.txt'
p.exists()
p.is_file()
p.is_dir()
p.is_absolute()      # 是否为绝对路径

# 路径操作
p = Path("path/to")
list(p.glob("*.txt"))    # 匹配所有 txt 文件
list(p.glob("**/*.py"))  # 递归匹配所有 py 文件

# 创建目录
Path("new_dir").mkdir(exist_ok=True)                    # 创建单层目录
Path("parent/child").mkdir(parents=True, exist_ok=True) # 创建多层目录

# 路径拼接
p = Path("dir") / "subdir" / "file.txt"

读写大文件

python 复制代码
# 逐行读取(内存友好)
with open("large_file.txt", "r", encoding="utf-8") as f:
    for line in f:
        process(line)

# 读取指定行
def read_line(file, line_num):
    with open(file, "r", encoding="utf-8") as f:
        for i, line in enumerate(f):
            if i == line_num - 1:
                return line
    return None

1.8 异常处理

基本语法

python 复制代码
try:
    result = 10 / 0
except ZeroDivisionError:
    print("不能除以零!")
except Exception as e:
    print(f"发生错误: {e}")
else:
    print("没有异常时执行")   # try 中无异常时执行
finally:
    print("无论是否异常都执行")  # 清理工作

raise 抛出异常

python 复制代码
# 抛出异常
def validate_age(age):
    if age < 0:
        raise ValueError("年龄不能为负数")
    if age > 150:
        raise ValueError("年龄超出合理范围")
    return age

try:
    validate_age(-5)
except ValueError as e:
    print(f"验证失败: {e}")

异常链

python 复制代码
# 异常链:保留原始异常信息
try:
    int("abc")
except ValueError as e:
    raise TypeError("类型错误") from e

# 忽略异常链
try:
    int("abc")
except ValueError:
    raise TypeError("类型错误") from None

常见异常类型

异常类型 说明
ZeroDivisionError 除数为零
TypeError 类型错误
ValueError 值错误
IndexError 索引越界
KeyError 键不存在
FileNotFoundError 文件不存在
AttributeError 属性不存在
NameError 名称未定义
SyntaxError 语法错误
IndentationError 缩进错误

自定义异常

python 复制代码
# 自定义异常类
class AgeError(Exception):
    """年龄错误异常"""
    def __init__(self, age, message="年龄必须在0-150之间"):
        self.age = age
        self.message = message
        super().__init__(self.message)

def set_age(age):
    if age < 0 or age > 150:
        raise AgeError(age)
    print(f"设置年龄为: {age}")

try:
    set_age(200)
except AgeError as e:
    print(f"错误: {e.age}岁的{e.message}")

异常处理原则

python 复制代码
# 1. 尽量精确捕获具体异常
try:
    result = 10 / 0
except ZeroDivisionError:       # 精确捕获
    print("不能除以零")

# 2. 多个异常分开捕获
try:
    result = 10 / 0
except ZeroDivisionError:
    print("除数为零")
except TypeError:
    print("类型错误")

# 3. 异常不一定要处理,可以重新抛出
try:
    dangerous_operation()
except Exception:
    print("记录日志")
    raise                    # 重新抛出,让上层处理

# 4. 使用 except Exception as e 获取异常信息
try:
    int("abc")
except Exception as e:
    print(f"异常类型: {type(e).__name__}")
    print(f"异常信息: {e}")

常用内置函数

python 复制代码
# 类型转换
int() float() str() bool() list() dict() set() tuple() bytes()

# 数据处理
len()            # 长度
max()            # 最大值
min()            # 最小值
sum()            # 求和
abs()            # 绝对值
round()          # 四舍五入
sorted()         # 排序
reversed()       # 反转(返回迭代器)
enumerate()      # 带索引的迭代
zip()            # 合并多个序列
all()            # 是否全部为 True
any()            # 是否存在 True

# 查看信息
type()           # 查看类型
isinstance()     # 判断类型
dir()            # 查看属性和方法
help()           # 查看帮助文档
id()             # 查看对象 ID
hash()           # 哈希值

# 输入输出
print()          # 输出
input()          # 输入
open()           # 打开文件

# 其他
range()          # 生成序列
slice()          # 切片对象
format()         # 格式化

enumerate 示例

python 复制代码
fruits = ["苹果", "香蕉", "橙子"]
for i, fruit in enumerate(fruits, start=1):
    print(f"{i}. {fruit}")
# 输出:
# 1. 苹果
# 2. 香蕉
# 3. 橙子

zip 示例

python 复制代码
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 78]
for name, score in zip(names, scores):
    print(f"{name}: {score}")
# 输出:
# Alice: 85
# Bob: 90
# Charlie: 78

all/any 示例

python 复制代码
numbers = [1, 2, 3, 4, 5]
all(n > 0 for n in numbers)  # True 全部大于0
any(n > 4 for n in numbers)  # True 存在大于4的

numbers = [0, 1, 2, 3]
all(n > 0 for n in numbers)  # False(因为有0)
相关推荐
蛾子喵喵喵2 小时前
autodl查看界面
python
<-->2 小时前
DeepSpeed 学习指南
人工智能·pytorch·python·深度学习·transformer
551只玄猫2 小时前
【数学建模 matlab 实验报告11】拟合
开发语言·数学建模·matlab·数据分析·课程设计·实验报告·拟合
Ulyanov2 小时前
Python与YAML的优雅交响:从配置管理到数据艺术的完美实践 (一)
开发语言·前端·python·数据可视化
菜菜小狗的学习笔记2 小时前
八股(一)Java基础
java·开发语言
Anfioo2 小时前
Java 基础-面向对象思想知识点详解
java·开发语言
bnmoel2 小时前
C语言自定义类型:联合和枚举
c语言·开发语言·数据结构·算法
计算机安禾2 小时前
【数据结构与算法】第34篇:选择排序:简单选择排序与堆排序
c语言·开发语言·数据结构·c++·算法·排序算法·visual studio
qyhua2 小时前
开源推荐 | ModelX RAG:基于 LangChain + Ollama 的企业级知识库系统
python·langchain·开源