burpow
python语法(上)

python语法(上)

Python3 基本数据类型

基础内容

Python3 的六个标准数据类型中:

不可变数据(3 个): Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个): List(列表)、Dictionary(字典)、Set(集合)。

  • 等号(=)用来给变量赋值
  • Python允许你同时为多个变量赋值
  • type() 函数查看变量的类型

Number(数字)

Python3 支持 int、float、bool、complex(复数)。

  1. Python可以同时为多个变量赋值,如a, b = 1, 2。
  2. 一个变量可以通过赋值指向不同类型的对象。
  3. 数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
  4. 乘方为**,取余为 %
  5. 在混合计算时,Python会把整型转换成为浮点数。
  6. Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加

String(字符串)

字符串不能被改变

索引及查找:变量[头下标:尾下标]

  1. 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  2. 字符串可以用+运算符连接在一起,用运算符重复。
  3. Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。

bool(布尔类型)

  • bool 是 int 的子类,因此布尔值可以被看作整数来使用,和其他数据类型进行比较,和逻辑运算符一起使用,被转换成其他数据类型,其中 True 等价于 1。
  • 可以使用 bool() 函数将其他类型的值转换为布尔值。以下值在转换为布尔值时为 FalseNoneFalse、零 (00.00j)、空序列(如 ''()[])和空映射(如 {})。其他所有值转换为布尔值时均为 True

List(列表)

与Python字符串不一样的是,列表中的元素是可以改变的

索引:

1
变量[头下标:尾下标:步长]

Tuple(元组)

1
2
tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
  1. 与字符串一样,元组的元素不能修改。
  2. 元组也可以被索引和切片,方法一样。
  3. 注意构造包含 0 或 1 个元素的元组的特殊语法规则。
  4. 元组也可以使用 + 操作符进行拼接。

Set(集合)

  • 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
  • 创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
1
2
3
4
5
6
7
print(a - b)     # a 和 b 的差集  

print(a | b)     # a 和 b 的并集

print(a & b)     # a 和 b 的交集

print(a ^ b)     # a 和 b 中不同时存在的元素

Dictionary(字典)

  1. 字典是一种映射类型,它是一个无序的 键(key) : 值(value) 的集合。
  2. 字典的关键字必须为不可变类型,且不能重复。
  3. 创建空字典使用 { }。

构造函数 dict() 可以直接从键值对序列中构建字典

1
2
3
4
5
6
>>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{'Runoob': 1, 'Google': 2, 'Taobao': 3}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{'Runoob': 1, 'Google': 2, 'Taobao': 3}

bytes 类型

bytes 类型通常用于处理二进制数据,创建 bytes 对象的方式有多种,最常见的方式是使用 b 前缀

1
x = b"hello"

此外,也可以使用 bytes() 函数将其他类型的对象转换为 bytes 类型。

1
x = bytes("hello", encoding="utf-8")

bytes 类型中的元素是整数值,因此在进行比较操作时需要使用相应的整数值。

1
2
3
x = b"hello"
if x[0] == ord("h"):
print("The first element is 'h'") # 其中 ord() 函数用于将字符转换为相应的整数值。

数据类型转换

隐式类型转换

较低数据类型(整数)自动转换为较高数据类型(浮点数)

显式类型转换

函数 描述
int(x [,base]) 将x转换为一个整数
float(x) 将x转换到一个浮点数
complex(real [,imag]) 创建一个复数
str(x) 将对象 x 转换为字符串
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
dict(d) 创建一个字典。d 必须是一个 (key, value)元组序列。
set(s) 转换为可变集合
repr(x) 将对象 x 转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
frozenset(s) 转换为不可变集合
chr(x) 将一个整数转换为一个字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

运算符

海象运算符:同时进行赋值和返回赋值的值

1
2
3
4
5
6
7
8
# 传统写法  
n = 10
if n > 5:
    print(n)

# 使用海象运算符
if (n := 10) > 5:
    print(n)

位运算符

a = 0011 1100(60)
b = 0000 1101(13)

运算符 描述 实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。

逻辑运算符

运算符 逻辑表达式 描述
and x and y 如果 x 为 False, 返回 x 的值
or x or y 如果 x 是 True,返回 x 的值
not not x 如果 x 为 True,返回 False

成员运算符

in:如果在指定的序列中找到值返回 True,否则返回 False。

身份运算符

x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True
%% id() 函数用于获取对象内存地址。%%

Python3 数字(Number)

在交互模式中,最后被输出的表达式结果被赋值给变量 _

1
2
3
4
5
6
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625

随机数函数,举例:

1
2
3
4
5
6
#!/usr/bin/python3
import random

print ("从 range(100) 返回一个随机数 : ",random.choice(range(100)))
print ("从列表中 [1, 2, 3, 5, 9]) 返回一个随机元素 : ", random.choice([1, 2, 3, 5, 9]))
print ("从字符串中 'Runoob' 返回一个随机字符 : ", random.choice('Runoob'))

还有:
random():随机生成下一个实数,它在[0,1)范围内。

本篇中还有很多数学函数,三角函数,数学常量如π和e

Python3 字符串(不可变,有序)

Python3 字符串 | 菜鸟教程

访问字符串

用索引,如str[:](左闭右开)

字符串运算符

如+

转义字符

\a(交互式编程执行后电脑会有响铃)

字符串格式化

举例:将一个值插入到一个有字符串格式符 %s 的字符串中

1
2
3
#!/usr/bin/python3

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

包括:格式化符号和格式化操作符辅助指令

三引号

三引号允许一个字符串跨多行,且字符串中可以包含各种特殊字符

f-string

%%比上面字符串格式化更好用,python3.6+%%

1
2
3
4
5
6
7
>>> name = 'Runoob'
>>> 'Hello %s' % name # 还要写%s
'Hello Runoob'

>>> name = 'Runoob'
>>> f'Hello {name}'  # 直接替换变量
'Hello Runoob'

Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果

1
2
3
4
5
6
7
>>> x = 1
>>> print(f'{x+1}') # Python 3.6
2

>>> x = 1
>>> print(f'{x+1=}') # Python 3.8
x+1=2

字符串内建函数(str对象的方法)

语法:

一般都是==点表示法==,如:str.capitalize(),否则有标注

功能:想想(语法框架,输入参数,输出类型)

大小写转化,设定宽度,统计出现次数,编码解码,tab转space,查找,判断字符构成(is前缀的函数),合并多个字符串 str.join(sequence),统计长度,左右对齐,截断边缘指定字符,返回最大小字母,替换 replace(old, new [, max])
[[字符串内建函数]]

Python3 列表(可变,有序)

Python 表达式 结果 描述
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print(x, end=” “) 1 2 3 迭代
功能:
替换或添加append()或删除del列表项,列表访问与拼接(使用+=等)

Python3 元组(不可变,有序)

1
2
tup1 = ()  # 创建空元组
tup2 = (50,) # 仅含一个元素

关于元组是不可变的

1
2
3
4
5
6
>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')
>>> id(tup)     # 查看内存地址
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800    # 内存地址不一样了

Python3 字典(可变,无序)

1
d = {key1 : value1, key2 : value2, key3 : value3 }

无序,所以,访问时要以d['key1']访问
无序,所以,更新键值对要以d['key1']='value1'更新(新建/修改)

字典键的特性

  1. 不允许同一个键出现两次,否则,后一个值会被记住
  2. 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

Python3 集合(可变,无序,不重复)

1
2
set1 = {1, 2, 3, 4}            # 直接使用大括号创建集合
set2 = set([4, 5, 6, 7]) # 使用 set() 函数从列表创建集合

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

集合可进行计算-&|^
%%^指不同时包含于a和b的元素%%


操作技巧

功能及使用范围

%%对Python中的字符串s,列表l,元组t,字典d,集合e进行操作的内建函数,是不是有长得类似且有类似的功能?请为我归纳这些内建函数一般都会有哪些功能?%%

功能类别 典型函数/方法 适用结构 说明 其他序列
长度与最值 len()max()min()sum() 全部序列(字符串、列表、元组)
集合、字典的键
len() 返回元素个数;max/min 返回最大最小值;sum 只对数字序列有效
查找与统计 index()count()find()in 字符串、列表、元组 index/count 返回首次出现位置或频次;find 仅字符串有,找不到返回 -1;in 通用成员测试
增删改 append()insert()pop()remove()clear()add()discard()remove()(集合) 列表、集合、字典 列表可增删任意位置;集合用 add/discard/remove;字典用 pop(key)del d[key]
遍历与迭代 keys()values()items()iter() 字典、集合 字典可分别迭代键、值、键值对;集合直接迭代元素 s用for…in..
排序与反转 sorted()reversed()sort()reverse() 列表、字符串、元组(前两者) sorted/reversed 返回新对象;sort/reverse 原地修改(仅列表)
拆分与合并 split()join()extend()+update() 字符串、列表、元组、字典 字符串用 split/join;列表用 extend/+;字典用 update 合并
去重与集合运算 set()union()intersection(&)difference(-)symmetric_difference(^) 集合 直接构造集合可去重;支持数学运算

快速对照示例

  • len("abc") == len([1,2,3]) == len({1,2,3}) == 3
  • [1,2,2].count(2) == 2"abba".count('b') == 2
  • d = {'a':1}; d.keys() == ['a']s = {1,2}; list(s) == [1,2]

一句话总结:Python 用统一的函数名(如 leninsorted)覆盖了大多数结构;可变类型(列表、集合、字典)额外提供增删改方法;不可变类型(字符串、元组)则只保留查询与转换功能。


功能共性

尽管具体方法名和行为有差异,但它们普遍支持以下几类操作:

  1. 长度查询len()
  2. 成员检测in
  3. 遍历/迭代for x in obj
  4. 创建副本.copy()(可变类型)
  5. 清空内容.clear()(可变类型)
  6. 转换为其他类型list(s), set(l), tuple(d.keys())
  7. 聚合操作max/min/sum/sorted/any/all/count
  8. 索引/切片访问(仅限有序容器:str/list/tuple)

⚠️ 注意:dict 和 set 是无序的(Python 3.7+ dict 有序是实现细节,但逻辑上仍视为映射而非序列),因此不支持索引、切片、reversed() 等依赖顺序的操作。


记忆技巧

  • 可变 vs 不可变

    • 可变:list, dict, set → 有 .append, .add, .update, .clear 等修改方法
    • 不可变:str, tuple → 所有“修改”操作都返回新对象
  • 有序 vs 无序

    • 有序:str, list, tuple → 支持索引、切片、reversed
    • 无序:set, dict(逻辑上)→ 不支持索引
  • 通用函数优先用 len(), in, sorted(),而不是依赖特定方法

Python3 条件控制

  1. if-elif-else
  2. Python 3.10 增加了 match…case 的条件判断
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    match subject:
    case <pattern_1>:
    <action_1>
    case <pattern_2>:
    <action_2>
    case <pattern_3>:
    <action_3>
    case _:
    <action_wildcard>
    # 一个 case 也可以设置多个匹配条件,条件使用 | 隔开,例如:
    case 401|403|404:
    return "Not allowed"

Python3 循环语句

while…[else…]语句

1
2
3
4
while (condition):
(statements)……
else: # 可附加else语句
<additional_statement>

可以使用 CTRL+C 来退出当前的无限循环(condition)

for语句

Python for 循环可以遍历任何可迭代对象

1
2
3
4
for <variable> in <sequence>: # 整数范围值可以配合 range() 函数使用
<statements>
else:
<statements> # 如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句

pass 语句

Python pass是空语句,是为了保持程序结构的完整性。

例题:斐波那契数列

1
2
3
4
5
6
7
8
#!/usr/bin/python3

# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 1000:
print(b, end=',')
a, b = b, a+b

输出:1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

本文作者:burpow
本文链接:https://youthfulnesszxx.github.io/2026/03/26/python语法(上)/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可