测控视觉的python语法基础

Python3 基础语法学习笔记

整理自:菜鸟教程 https://www.runoob.com/python3/python3-basic-syntax.html
整理日期:2026-02-02


目录

  1. Python3 基本数据类型

  2. Python3 数据类型转换

  3. Python3 解释器

  4. Python3 注释

  5. Python3 运算符

  6. Python3 数字(Number)

  7. Python3 字符串

  8. Python3 列表

  9. Python3 元组

  10. Python3 字典

  11. Python3 集合

  12. Python3 条件控制

  13. Python3 循环语句


1. Python3 基本数据类型

核心概念

Python中变量无需声明类型,类型由赋值的对象决定。

“Python 中的变量就是变量,它没有类型,我们所说的’类型’是变量所指的内存中对象的类型。”

六大标准数据类型

不可变数据(3个)

  • Number(数字)

  • String(字符串)

  • Tuple(元组)

可变数据(3个)

  • List(列表)

  • Dictionary(字典)

  • Set(集合)

关键类型详解

Number 类型

支持 intfloatboolcomplex,其中 bool 是 int 的子类(True==1,False==0)

String 类型

使用单/双引号,支持索引和切片,字符串不可修改

List(列表)

可修改的有序集合,支持多种数据类型混合

Tuple(元组)

不可修改的有序集合,需用逗号区分单元素元组:(42,)

Set(集合)

无序且无重复元素,自动去除重复项

Dictionary(字典)

键值对映射,键必须为不可变类型且唯一

核心区别对比表

类型 是否有序 能否修改 是否允许重复 典型用途
list 列表 :white_check_mark: 有序 :white_check_mark: 可变 :white_check_mark: 允许 存一组数据,常用
tuple 元组 :white_check_mark: 有序 :cross_mark: 不可变 :white_check_mark: 允许 固定数据、更安全
set 集合 :cross_mark: 无序 :white_check_mark: 可变 :cross_mark: 不允许 去重、集合运算
dict 字典 :white_check_mark: 有序* :white_check_mark: 可变 :cross_mark::white_check_mark: 键值映射、查找

类型检查工具

  • type() - 返回对象的确切类型

  • isinstance() - 检查对象是否属于某类型(包括子类)

# 示例
a = 111
print(isinstance(a, int))  # True
print(type(a))  # <class 'int'>

2. Python3 数据类型转换

核心概念

Python数据类型转换分为两类:

  1. 隐式类型转换 - Python 会自动将一种数据类型转换为另一种数据类型,无需手动干预

  2. 显式类型转换 - 使用内置函数主动转换数据类型

隐式转换示例

当不同数据类型进行运算时,较低精度的类型自动升级为较高精度类型。

# 整数与浮点数相加,整数自动转换为浮点数
num_int = 123
num_flo = 1.23
num_new = num_int + num_flo
​
print("num_new 的值:", num_new)  # 124.23
print("num_new 的数据类型:", type(num_new))  # <class 'float'>

注意:整数与字符串相加会产生 TypeError 错误。

显式转换函数

常用的类型转换函数:

函数 功能 示例
int(x) 转换为整数 int("123") → 123
float(x) 转换为浮点数 float("1.23") → 1.23
str(x) 转换为字符串 str(123) → “123”
list(x) 转换为列表 list((1,2,3)) → [1,2,3]
tuple(x) 转换为元组 tuple([1,2,3]) → (1,2,3)
set(x) 转换为集合 set([1,2,2,3]) → {1,2,3}
chr(x) 整数转字符 chr(65) → ‘A’
ord(x) 字符转整数 ord('A') → 65
hex(x) 转十六进制 hex(255) → ‘0xff’
oct(x) 转八进制 oct(8) → ‘0o10’

关键注意事项

数据转换的可行性取决于源数据是否包含足够信息表示目标类型。

# 可以转换
int("123")  # ✓ 成功
​
# 无法转换
int("Hello")  # ✗ ValueError

3. Python3 解释器

环境配置

Linux/Unix 系统

Python3 通常安装在 /usr/local/python3 目录。设置环境变量:

$ PATH=$PATH:/usr/local/python3/bin/python3
$ python3 --version
Python 3.4.0

Windows 系统

set path=%path%;C:\python34

交互式编程

启动 Python 解释器:

$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

简单示例:

>>> print("Hello, Python!")
Hello, Python!

多行代码示例(if 语句):

>>> flag = True
>>> if flag:
...     print("flag 条件为 True!")
...
flag 条件为 True!

脚本式编程

将代码保存为 hello.py 文件后执行:

python3 hello.py

Linux/Unix 下的可执行脚本

在脚本顶部添加 shebang 行:

#!/usr/bin/env python3
print("Hello, Python!")

设置执行权限:

$ chmod +x hello.py
$ ./hello.py

输出:

Hello, Python!

4. Python3 注释

注释类型

1. 单行注释

使用 # 符号开头。

“# 符号后面的所有文本都被视为注释,不会被解释器执行。”

# 这是一个注释
print("Hello, World!")

2. 多行注释

使用三个单引号 ''' 或三个双引号 """ 包围。

使用单引号:

#!/usr/bin/python3
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello, World!")

使用双引号:

#!/usr/bin/python3
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print("Hello, World!")

重要提示

  • 多行字符串虽然可用作注释,但实际上是字符串对象,不会影响程序执行

  • 多行注释不能嵌套使用,会导致语法错误

  • 文档字符串需放在函数定义的第一行才能被 __doc__ 属性正确识别


5. Python3 运算符

运算符类型

1. 算术运算符

运算符 描述 示例
+ 加法 10 + 20 = 30
- 减法 20 - 10 = 10
* 乘法 10 * 20 = 200
/ 除法 20 / 10 = 2.0
% 取模(余数) 20 % 3 = 2
** 幂运算 2 ** 3 = 8
// 整除(向下取整) 9 // 2 = 4
a = 21
b = 10

print(a + b)   # 31
print(a - b)   # 11
print(a * b)   # 210
print(a / b)   # 2.1
print(a % b)   # 1
print(a ** b)  # 21^10
print(a // b)  # 2

2. 比较运算符

运算符 描述 示例
== 等于 (a == b) 返回 False
!= 不等于 (a != b) 返回 True
> 大于 (a > b) 返回 True
< 小于 (a < b) 返回 False
>= 大于等于 (a >= b) 返回 True
<= 小于等于 (a <= b) 返回 False

3. 赋值运算符

运算符 描述 示例
= 简单赋值 c = a + b
+= 加法赋值 c += a 等效于 c = c + a
-= 减法赋值 c -= a 等效于 c = c - a
*= 乘法赋值 c *= a 等效于 c = c * a
/= 除法赋值 c /= a 等效于 c = c / a
%= 取模赋值 c %= a 等效于 c = c % a
**= 幂赋值 c **= a 等效于 c = c ** a
//= 整除赋值 c //= a 等效于 c = c // a
海象运算符(:=)- Python 3.8+

允许在表达式中同时进行赋值和返回赋值的值。

# 传统方式
n = len([1, 2, 3])
if n > 2:
    print(f"列表长度 {n} 大于2")

# 使用海象运算符
if (n := len([1, 2, 3])) > 2:
    print(f"列表长度 {n} 大于2")

4. 位运算符

运算符 描述 示例
& 按位与 a & b
` ` 按位或
^ 按位异或 a ^ b
~ 按位取反 ~a
<< 左移 a << 2
>> 右移 a >> 2
a = 60  # 二进制:0011 1100
b = 13  # 二进制:0000 1101

print(a & b)   # 12 = 0000 1100
print(a | b)   # 61 = 0011 1101
print(a ^ b)   # 49 = 0011 0001
print(~a)      # -61 = 1100 0011
print(a << 2)  # 240 = 1111 0000
print(a >> 2)  # 15 = 0000 1111

5. 逻辑运算符

运算符 描述 示例
and 逻辑与 x and y
or 逻辑或 x or y
not 逻辑非 not x

优先级顺序:not > and > or

a = True
b = False

print(a and b)  # False
print(a or b)   # True
print(not a)    # False

6. 成员运算符

运算符 描述 示例
in 在序列中存在 x in list
not in 不在序列中 x not in list
a = 10
list = [1, 2, 3, 4, 5]

if a in list:
    print("a 在列表中")
else:
    print("a 不在列表中")

7. 身份运算符

运算符 描述 示例
is 判断是否为同一对象 x is y
is not 判断是否不是同一对象 x is not y

is 与 == 的区别

“is 用于判断两个变量引用对象是否为同一个,== 用于判断引用变量的值是否相等”

a = [1, 2, 3]
b = a
c = a[:]

print(b is a)     # True - 同一对象
print(c is a)     # False - 不同对象
print(c == a)     # True - 值相等

6. Python3 数字(Number)

数值类型

Python 支持三种数值类型:

1. 整型 (int)

正或负整数,不带小数点。Python3 中无大小限制。

a = 100
b = -100
c = 0

2. 浮点型 (float)

包含整数部分和小数部分,支持科学计数法。

f1 = 1.23
f2 = 3.14159
f3 = 2.5e2  # 250.0

3. 复数 (complex)

由实部和虚部组成,表示为 a + bjcomplex(a, b)

c1 = 1 + 2j
c2 = complex(3, 4)

数据类型转换

int(x)      # 将 x 转换为整数
float(x)    # 将 x 转换为浮点数
complex(x)  # 将 x 转换为复数

进制表示

# 十六进制
hex_num = 0xFF  # 255

# 八进制
oct_num = 0o10  # 8

基本运算符

运算符 描述 示例
+ 加法 5 + 3 = 8
- 减法 5 - 3 = 2
* 乘法 5 * 3 = 15
/ 除法 5 / 2 = 2.5
// 整数除法 5 // 2 = 2
% 取余 5 % 2 = 1
** 幂运算 2 ** 3 = 8

数学函数

常用函数

函数 描述 示例
abs(x) 绝对值 abs(-10) = 10
ceil(x) 向上取整 ceil(4.1) = 5
floor(x) 向下取整 floor(4.9) = 4
round(x [,n]) 四舍五入 round(4.5) = 4
sqrt(x) 平方根 sqrt(9) = 3.0
pow(x, y) x 的 y 次方 pow(2, 3) = 8
max(x1, x2,...) 最大值 max(1, 5, 3) = 5
min(x1, x2,...) 最小值 min(1, 5, 3) = 1

随机数函数

import random

random.choice([1, 2, 3, 4])  # 随机选择元素
random.randrange(1, 100, 2)  # 随机选择范围内的偶数
random.random()              # 随机浮点数 [0,1)
random.shuffle(list)         # 随机打乱列表
random.uniform(x, y)         # 随机浮点数 [x,y]

注意事项:奇进偶舍

round() 函数遵循银行家舍入法(奇进偶舍):

print(round(0.5))   # 0 - 舍
print(round(1.5))   # 2 - 进
print(round(2.5))   # 2 - 舍
print(round(3.5))   # 4 - 进

当小数恰好为 0.5 时,会舍入到最近的偶数


7. Python3 字符串

创建字符串

Python 字符串通过单引号或双引号创建。

str1 = 'Hello'
str2 = "World"
str3 = """多行
字符串"""

字符串访问与索引

索引规则

“索引值以 0 为开始值,-1 为从末尾的开始位置”

str = "Hello World"

print(str[0])    # 'H'
print(str[-1])   # 'd'

切片操作

使用 [start:end:step] 格式,遵循"左闭右开"原则。

str = "Hello World"

print(str[0:5])    # 'Hello'
print(str[6:])     # 'World'
print(str[:5])     # 'Hello'
print(str[::2])    # 'HloWrd' - 每隔一个字符
print(str[::-1])   # 'dlroW olleH' - 反转字符串

转义字符

转义符 描述
\n 换行符
\t 制表符(Tab)
\\ 反斜杠
\' 单引号
\" 双引号
\r 回车
\b 退格

原始字符串

使用 rR 前缀,让反斜杠不发生转义。

print('C:\name\new')   # C:
                       # ame
                       # ew
print(r'C:\name\new')  # C:\name\new

字符串运算符

运算符 描述 示例
+ 连接 'Hello' + 'World''HelloWorld'
* 重复 'Hi' * 3'HiHiHi'
in 成员检测 'H' in 'Hello'True
not in 成员检测 'x' not in 'Hello'True
r/R 原始字符串 r'\n''\\n'

字符串格式化

1. 百分号格式化

name = "小明"
age = 20
print("我叫 %s 今年 %d 岁!" % (name, age))
# 输出:我叫 小明 今年 20 岁!

常用格式符:

符号 描述
%s 字符串
%d 整数
%f 浮点数
%x 十六进制
%o 八进制

2. f-string (Python 3.6+)

name = "小明"
age = 20
print(f'Hello {name}, 你今年 {age} 岁')
# 输出:Hello 小明, 你今年 20 岁

支持表达式:

x = 10
y = 20
print(f'{x} + {y} = {x+y}')
# 输出:10 + 20 = 30

3. str.format() (Python 2.6+)

print('{}网址: "{}!"'.format('菜鸟教程', 'www.runoob.com'))
# 输出:菜鸟教程网址: "www.runoob.com!"

print('{0} 和 {1}'.format('Google', 'Runoob'))
# 输出:Google 和 Runoob

print('{name}网址: {site}'.format(name='菜鸟教程', site='www.runoob.com'))
# 输出:菜鸟教程网址: www.runoob.com

常用字符串方法

方法 描述 示例
upper() 转大写 'hello'.upper()'HELLO'
lower() 转小写 'HELLO'.lower()'hello'
strip() 去除首尾空白 ' hello '.strip()'hello'
split(sep) 分割字符串 'a,b,c'.split(',')['a','b','c']
join(seq) 连接序列 ','.join(['a','b'])'a,b'
replace(old, new) 替换 'hello'.replace('l','L')'heLLo'
find(str) 查找位置 'hello'.find('l')2
count(str) 统计出现次数 'hello'.count('l')2
startswith(str) 是否以某字符串开头 'hello'.startswith('he')True
endswith(str) 是否以某字符串结尾 'hello'.endswith('lo')True
isdigit() 是否只包含数字 '123'.isdigit()True
isalpha() 是否只包含字母 'abc'.isalpha()True
isalnum() 是否只包含字母和数字 'abc123'.isalnum()True

三引号字符串

用于多行文本,保留格式和特殊字符。

para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print(para_str)

重要特性

Python 3 中所有字符串都是 Unicode 字符串,支持国际化文本处理。

str = "你好,世界!"
print(str)  # 直接支持中文

8. Python3 列表

核心概念

Python 列表是一种有序、可变的序列数据结构,使用方括号定义,元素可以是任何数据类型。

创建列表

list1 = ['Google', 'Runoob', 1997, 2000]
list2 = [1, 2, 3, 4, 5]
list3 = ["a", "b", "c", "d"]
empty_list = []

访问列表元素

索引访问

从 0 开始正向索引,或使用 -1、-2 等反向索引。

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']

print(list[0])    # 'red'
print(list[1])    # 'green'
print(list[-1])   # 'black'
print(list[-2])   # 'white'

切片操作

使用 [start:end:step] 格式提取子列表。

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']

print(list[0:4])     # ['red', 'green', 'blue', 'yellow']
print(list[1:-2])    # ['green', 'blue', 'yellow']
print(list[::2])     # ['red', 'blue', 'white'] - 隔一个取一个
print(list[::-1])    # 反转列表

更新列表

list = ['Google', 'Runoob', 1997, 2000]

print("原列表:", list)
list[2] = 2001
print("更新后:", list)  # ['Google', 'Runoob', 2001, 2000]

删除列表元素

list = ['Google', 'Runoob', 1997, 2000]

print("原列表:", list)
del list[2]
print("删除后:", list)  # ['Google', 'Runoob', 2000]

列表运算符

运算符 描述 示例
+ 连接 [1, 2] + [3, 4][1, 2, 3, 4]
* 重复 ['Hi!'] * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']
in 成员检测 3 in [1, 2, 3]True
len([1, 2, 3])           # 3 - 长度
max([1, 5, 3])           # 5 - 最大值
min([1, 5, 3])           # 1 - 最小值
list((1, 2, 3))          # [1, 2, 3] - 元组转列表

列表方法

方法 描述 示例
append(obj) 末尾添加元素 list.append('item')
extend(seq) 批量添加元素 list.extend([1, 2, 3])
insert(index, obj) 指定位置插入 list.insert(1, 'new')
remove(obj) 删除首个匹配值 list.remove('item')
pop([index]) 移除并返回元素 list.pop()list.pop(0)
clear() 清空列表 list.clear()
index(obj) 查找首次出现位置 list.index('item')
count(obj) 统计出现次数 list.count('item')
sort() 排序列表 list.sort()
reverse() 反向排列 list.reverse()
copy() 浅拷贝列表 new_list = list.copy()

列表复制注意事项

引用赋值(不是复制)

a = [1, 2, 3]
b = a          # b 引用 a,指向同一对象

b[0] = 999
print(a)       # [999, 2, 3] - a 也被修改了

独立复制

a = [1, 2, 3]
b = a[:]       # 切片复制
# 或
b = a.copy()   # copy() 方法

b[0] = 999
print(a)       # [1, 2, 3] - a 不受影响
print(b)       # [999, 2, 3]

列表推导式

# 创建 0-9 的平方列表
squares = [x**2 for x in range(10)]
print(squares)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 带条件的列表推导式
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)  # [0, 4, 16, 36, 64]

9. Python3 元组

什么是元组

元组是 Python 中的一种数据结构,类似于列表,但有一个关键区别:

“元组中的元素值是不允许修改的”

元组使用小括号 () 创建,元素间用逗号分隔。

创建元组

tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5)
tup3 = "a", "b", "c"       # 不需要括号也可以
tup_empty = ()              # 空元组
tup_single = (50,)          # 单元素必须加逗号

注意:单元素元组必须加逗号,否则被视为其他类型。

tup1 = (50)
print(type(tup1))     # <class 'int'>

tup2 = (50,)
print(type(tup2))     # <class 'tuple'>

访问元组

元组支持下标索引和切片操作,类似于字符串和列表。

tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin')

print(tup[0])       # 'Google'
print(tup[1])       # 'Runoob'
print(tup[-1])      # 'Weixin'
print(tup[-2])      # 'Weibo'
print(tup[1:])      # ('Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin')
print(tup[1:4])     # ('Runoob', 'Taobao', 'Wiki')

修改元组

元组中的元素值不允许修改,但可以连接组合。

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')

# 错误示例
# tup1[0] = 100  # TypeError

# 正确做法:创建新元组
tup3 = tup1 + tup2
print(tup3)  # (12, 34.56, 'abc', 'xyz')

删除元组

元组中的元素值不允许删除,但可以使用 del 语句删除整个元组。

tup = ('Google', 'Runoob', 1997, 2000)

print(tup)
del tup
# print(tup)  # NameError: name 'tup' is not defined

元组运算符

运算符 描述 示例
+ 连接 (1, 2) + (3, 4)(1, 2, 3, 4)
* 复制 ('Hi!',) * 4('Hi!', 'Hi!', 'Hi!', 'Hi!')
in 成员检查 3 in (1, 2, 3)True
len() 长度 len((1, 2, 3))3
max() 最大值 max((1, 5, 3))5
min() 最小值 min((1, 5, 3))1
# 连接
print((1, 2, 3) + (4, 5, 6))  # (1, 2, 3, 4, 5, 6)

# 复制
print(('Hi!',) * 4)  # ('Hi!', 'Hi!', 'Hi!', 'Hi!')

# 成员检查
print(3 in (1, 2, 3))  # True

# 迭代
for x in (1, 2, 3):
    print(x, end=" ")  # 1 2 3

元组内置函数

函数 描述 示例
len(tuple) 计算元素个数 len((1, 2, 3))3
max(tuple) 返回最大值 max((1, 5, 3))5
min(tuple) 返回最小值 min((1, 5, 3))1
tuple(iterable) 将可迭代对象转换为元组 tuple([1, 2, 3])(1, 2, 3)
# 转换列表为元组
list1 = ['Google', 'Taobao', 'Runoob', 'Baidu']
tuple1 = tuple(list1)
print(tuple1)  # ('Google', 'Taobao', 'Runoob', 'Baidu')

元组解包

# 元组解包
tup = ('Google', 'Runoob', 1997, 2000)
(company1, company2, year1, year2) = tup

print(company1)  # 'Google'
print(year1)     # 1997

不可变性的真正含义

元组所指向的内存地址不能改变。如果元组包含可变对象(如列表),该对象内部仍可修改,但元组本身对该对象的引用不变。

tup = ('a', 'b', ['c', 'd'])

# 可以修改列表内容
tup[2][0] = 'X'
tup[2][1] = 'Y'

print(tup)  # ('a', 'b', ['X', 'Y'])

# 但不能修改元组元素引用
# tup[2] = ['e', 'f']  # TypeError

10. Python3 字典

概述

字典是一个可变容器,存储键值对(key-value pairs)。

格式:{key1: value1, key2: value2}

关键特性

  • 键必须唯一且不可变(字符串、数字、元组可以,列表不行)

  • 值可以是任何数据类型,且不需要唯一

  • 大小写敏感:‘Name’ 和 ‘name’ 是不同的键

创建字典

空字典

emptyDict = {}
# 或
emptyDict = dict()

带值字典

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

# 使用 dict() 构造器
dict1 = dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
dict2 = dict(Runoob=1, Google=2, Taobao=3)

访问字典值

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

print(tinydict['Name'])  # 'Runoob'
print(tinydict['Age'])   # 7

# 如果键不存在会报错
# print(tinydict['School'])  # KeyError

修改和添加

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

# 修改已存在的键
tinydict['Age'] = 8

# 添加新键值对
tinydict['School'] = "Tutorial"

print(tinydict)
# {'Name': 'Runoob', 'Age': 8, 'Class': 'First', 'School': 'Tutorial'}

删除字典元素

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

# 删除指定键
del tinydict['Name']

# 清空字典
tinydict.clear()

# 删除字典对象
del tinydict

字典方法

方法 描述 示例
len(dict) 计算元素个数 len(dict)
str(dict) 输出字典的字符串表示 str(dict)
type(variable) 返回变量类型 type(dict)
dict.clear() 删除所有元素 dict.clear()
dict.copy() 浅拷贝 dict2 = dict1.copy()
dict.get(key, default=None) 获取值,不存在返回默认值 dict.get('Name', 'Unknown')
dict.keys() 返回所有键 dict.keys()
dict.values() 返回所有值 dict.values()
dict.items() 返回键值对元组 dict.items()
dict.pop(key) 删除并返回指定键的值 dict.pop('Name')
dict.update(dict2) 合并字典 dict1.update(dict2)

字典遍历

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

# 遍历键
for key in tinydict:
    print(key)

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

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

字典推导式

# 创建平方字典
squares = {x: x**2 for x in range(1, 6)}
print(squares)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 带条件的字典推导式
even_squares = {x: x**2 for x in range(1, 11) if x % 2 == 0}
print(even_squares)  # {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

11. Python3 集合

什么是集合

集合是一个无序的不重复元素序列。支持交集、并集、差集等常见集合操作。

创建集合

# 使用大括号
set1 = {1, 2, 3, 4}

# 使用 set() 函数
set2 = set([4, 5, 6, 7])

# 从字符串创建
set3 = set('hello')
print(set3)  # {'h', 'e', 'l', 'o'} - 自动去重

注意:空集合必须用 set(){} 创建的是空字典。

empty_set = set()       # 正确
empty_dict = {}         # 这是字典

添加元素

add() - 添加单个元素

s = {1, 2, 3}
s.add(4)
print(s)  # {1, 2, 3, 4}

update() - 添加多个元素

s = {1, 2, 3}
s.update([4, 5, 6])
print(s)  # {1, 2, 3, 4, 5, 6}

# 也可以添加元组、集合等
s.update({7, 8}, (9, 10))
print(s)  # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

移除元素

方法 描述 元素不存在时
remove(x) 移除元素 报错 KeyError
discard(x) 移除元素 不报错
pop() 随机删除一个元素并返回 集合为空时报错
s = {1, 2, 3, 4, 5}

# remove - 元素不存在会报错
s.remove(3)
print(s)  # {1, 2, 4, 5}

# discard - 元素不存在不会报错
s.discard(10)  # 没有错误
print(s)  # {1, 2, 4, 5}

# pop - 随机删除
x = s.pop()
print(f"删除了: {x}")
print(s)

集合运算

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
运算符 方法 描述 示例结果
- difference() 差集 {1, 2}
` ` union() 并集
& intersection() 交集 {3, 4}
^ symmetric_difference() 对称差 {1, 2, 5, 6}
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

# 差集:a 中有但 b 中没有
print(a - b)  # {1, 2}

# 并集:a 或 b 中的所有元素
print(a | b)  # {1, 2, 3, 4, 5, 6}

# 交集:a 和 b 都有的元素
print(a & b)  # {3, 4}

# 对称差:不同时包含于 a 和 b 的元素
print(a ^ b)  # {1, 2, 5, 6}

其他操作

s = {1, 2, 3, 4, 5}

# 计算元素个数
print(len(s))  # 5

# 清空集合
s.clear()
print(s)  # set()

# 判断元素是否存在
s = {1, 2, 3}
print(2 in s)      # True
print(10 in s)     # False

集合推导式

# 从字符串创建集合,排除某些字符
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)  # {'r', 'd'}

# 创建平方集合
squares = {x**2 for x in range(1, 6)}
print(squares)  # {1, 4, 9, 16, 25}

集合方法总结

方法 描述
add(x) 添加元素
update(x) 添加多个元素
remove(x) 删除元素(不存在则报错)
discard(x) 删除元素(不存在不报错)
pop() 随机删除并返回元素
clear() 清空集合
union(set) 返回并集
intersection(set) 返回交集
difference(set) 返回差集
symmetric_difference(set) 返回对称差
issubset(set) 判断是否为子集
issuperset(set) 判断是否为超集
isdisjoint(set) 判断是否没有交集

12. Python3 条件控制

核心概念

Python 使用 ifelifelse 关键字实现条件判断,根据条件的真假值决定执行的代码块。

基本语法

if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3

关键点:

  • 每个条件后需要冒号 :

  • 使用缩进划分语句块(通常是 4 个空格)

  • Python 中没有 switch...case(Python 3.10+ 新增 match...case

简单条件判断

var1 = 100
if var1:
    print("变量 var1 的值为:", var1)

# 输出:变量 var1 的值为: 100

if-else 语句

age = 18

if age >= 18:
    print("你已经成年了")
else:
    print("你还未成年")

if-elif-else 语句

score = 85

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 70:
    print("中等")
elif score >= 60:
    print("及格")
else:
    print("不及格")

嵌套 if 语句

num = int(input("输入一个数字:"))

if num % 2 == 0:
    if num % 3 == 0:
        print("你输入的数字可以整除 2 和 3")
    else:
        print("你输入的数字可以整除 2,但不能整除 3")
else:
    if num % 3 == 0:
        print("你输入的数字可以整除 3,但不能整除 2")
    else:
        print("你输入的数字不能整除 2 和 3")

常用比较运算符

运算符 含义 示例
< 小于 x < y
<= 小于等于 x <= y
> 大于 x > y
>= 大于等于 x >= y
== 等于 x == y
!= 不等于 x != y

逻辑运算符

x = 10
y = 20

# and - 与
if x > 0 and y > 0:
    print("x 和 y 都是正数")

# or - 或
if x > 0 or y > 0:
    print("至少有一个是正数")

# not - 非
if not x > 20:
    print("x 不大于 20")

三元运算符

Python 支持简洁的三元条件表达式:

# 语法:value_if_true if condition else value_if_false

age = 18
status = "成年" if age >= 18 else "未成年"
print(status)  # 成年

# 示例
a = 10
b = 20
max_value = a if a > b else b
print(max_value)  # 20

Python 3.10+ match-case 语句

Python 3.10 引入了 match...case 提供更现代的模式匹配方式。

def http_status(status):
    match status:
        case 400:
            return "Bad request"
        case 401:
            return "Unauthorized"
        case 403:
            return "Forbidden"
        case 404:
            return "Not found"
        case _:
            return "Other error"

print(http_status(404))  # Not found
print(http_status(500))  # Other error

match-case 的高级用法:

# 匹配多个值
def day_type(day):
    match day:
        case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday":
            return "工作日"
        case "Saturday" | "Sunday":
            return "周末"
        case _:
            return "无效的日期"

# 模式匹配
def parse_point(point):
    match point:
        case (0, 0):
            return "原点"
        case (0, y):
            return f"Y轴上的点: {y}"
        case (x, 0):
            return f"X轴上的点: {x}"
        case (x, y):
            return f"点: ({x}, {y})"

13. Python3 循环语句

主要循环类型

Python 提供两种主要循环结构:

  • while 循环 - 当条件为真时持续执行

  • for 循环 - 遍历序列(如列表、字符串)中的元素

while 循环

基本语法

while condition:
    statements

示例

# 计数循环
count = 0
while count < 5:
    print(count)
    count += 1

# 输出:0 1 2 3 4

无限循环

# 注意:这会一直运行,慎用!
# while True:
#     print("无限循环")

while-else

count = 0
while count < 5:
    print(count)
    count += 1
else:
    print("循环正常结束")

# 输出:0 1 2 3 4
#       循环正常结束

for 循环

基本语法

for variable in sequence:
    statements

遍历列表

fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
    print(fruit)

# 输出:apple
#       banana
#       orange

遍历字符串

for char in "Python":
    print(char)

# 输出:P y t h o n

使用 range()

range() 函数生成数字序列。

# range(stop)
for i in range(5):
    print(i)
# 输出:0 1 2 3 4

# range(start, stop)
for i in range(2, 6):
    print(i)
# 输出:2 3 4 5

# range(start, stop, step)
for i in range(0, 10, 2):
    print(i)
# 输出:0 2 4 6 8

for-else

for i in range(5):
    print(i)
else:
    print("循环正常结束")

# 输出:0 1 2 3 4
#       循环正常结束

循环控制语句

break - 终止循环

break 立即终止循环,跳过 else 子句。

for i in range(10):
    if i == 5:
        break
    print(i)

# 输出:0 1 2 3 4
# 查找质数示例
for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(f"{n} 等于 {x} * {n//x}")
            break
    else:
        # 循环中没有找到因子
        print(f"{n} 是质数")

continue - 跳过当前迭代

continue 跳过当前循环的剩余语句,进入下一次迭代。

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

# 输出:1 3 5 7 9(只输出奇数)

pass - 空语句

pass 是一个空操作,用作占位符。

for i in range(5):
    if i == 3:
        pass  # 什么都不做,继续执行
    print(i)

# 输出:0 1 2 3 4

在定义空函数或类时很有用:

def my_function():
    pass  # TODO: 以后实现

class MyClass:
    pass  # TODO: 以后实现

嵌套循环

# 九九乘法表
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}×{i}={i*j}", end="\t")
    print()

实用示例

计算 1 到 100 的总和

total = 0
counter = 1

while counter <= 100:
    total += counter
    counter += 1

print(f"1 到 100 的总和为: {total}")
# 输出:1 到 100 的总和为: 5050

遍历字典

knights = {'gallahad': 'the pure', 'robin': 'the brave'}

# 遍历键值对
for k, v in knights.items():
    print(k, v)

# 输出:gallahad the pure
#       robin the brave

同时遍历索引和值

fruits = ['apple', 'banana', 'orange']

for index, value in enumerate(fruits):
    print(f"{index}: {value}")

# 输出:0: apple
#       1: banana
#       2: orange

同时遍历两个序列

questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']

for q, a in zip(questions, answers):
    print(f'What is your {q}? It is {a}.')

# 输出:What is your name? It is lancelot.
#       What is your quest? It is the holy grail.
#       What is your favorite color? It is blue.

总结

本笔记涵盖了 Python3 基础语法的核心内容,包括:

:white_check_mark: 数据类型 - 6大标准数据类型及其转换
:white_check_mark: 解释器 - 交互式与脚本式编程
:white_check_mark: 注释 - 单行和多行注释规范
:white_check_mark: 运算符 - 算术、比较、逻辑、位、成员、身份运算符
:white_check_mark: 数字 - 整型、浮点型、复数及数学函数
:white_check_mark: 字符串 - 索引、切片、格式化、常用方法
:white_check_mark: 列表 - 创建、访问、修改、常用操作
:white_check_mark: 元组 - 不可变序列的特性和应用
:white_check_mark: 字典 - 键值对映射及常用方法
:white_check_mark: 集合 - 无序不重复集合及集合运算
:white_check_mark: 条件控制 - if-elif-else 和 match-case
:white_check_mark: 循环语句 - while 和 for 循环及控制语句