Python 数据类型学习笔记
目录
一、常见的数据类型
1. 数值类型
- 整数 :
int- 如:10,-5,0 - 浮点数/小数 :
float- 如:3.14,-0.5
2. 布尔类型:bool
- 只有两个值:
True(真) /False(假)
3. 字符串:str
- 用于表示文本数据,如:
"hello",'Python'
4. 空值:None
- 表示什么都没有,类似于其他语言的
null
5. 数据容器(复合类型)
| 类型 | 表示 | 特点 |
|---|---|---|
| 列表 | list |
有序、可重复、可修改 |
| 元组 | tuple |
有序、可重复、不可修改 |
| 集合 | set |
无序 、不重复、可修改 |
| 字典 | dict |
键值对存储,键唯一 |
二、变量的定义
1. 什么是变量?
变量是程序中用来存储数据的容器。
2. 变量命名规则
- 由字母、数字、下划线组成
- 不能以数字开头
- 区分大小写(
name和Name是不同的变量) - 不能使用 Python 关键字(如
if,for,class等)
3. 赋值方式
python
# 单个赋值
a = 1
# 多个变量同时赋值
a, b = 1, "Python"
# 连续赋值
x = y = z = 0
三、常见类型函数
1. type() 函数
-
功能:查询数据的类型
-
示例 :
pythontype(123) # 返回 <class 'int'> type("hello") # 返回 <class 'str'> type([1, 2, 3]) # 返回 <class 'list'>
2. isinstance() 函数
-
功能:检验数据是否属于指定的类型
-
返回值 :布尔值(
True/False) -
语法 :
isinstance(数据, 类型) -
示例 :
pythonisinstance(123, int) # 返回 True isinstance("hello", str) # 返回 True isinstance([1, 2], list) # 返回 True
四、字符串
1. 字符串的表示方式
| 方式 | 示例 | 说明 |
|---|---|---|
| 单引号 | 'hello' |
普通字符串 |
| 双引号 | "hello" |
普通字符串 |
| 三引号 | '''多行文本''' 或 """多行文本""" |
支持换行 |
2. 常见转义字符
| 转义字符 | 含义 |
|---|---|
\n |
换行 |
\t |
制表符(Tab) |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠 |
3. 字符串的拼接
- 使用
+号连接两个字符串 - 非字符串类型会自动调用
__str__()方法转换
python
"Hello" + " World" # "Hello World"
"Age: " + str(25) # "Age: 25"
4. 字符串的格式化
python
name = "张三"
age = 20
# 方式1:% 操作符(旧式)
"姓名:%s,年龄:%d" % (name, age)
# 方式2:format() 方法
"姓名:{},年龄:{}".format(name, age)
# 方式3:f-string(推荐,Python 3.6+)
f"姓名:{name},年龄:{age}"
5. 字符串常用方法
| 方法 | 功能 |
|---|---|
upper() |
转换为大写 |
lower() |
转换为小写 |
title() |
每个单词首字母大写 |
strip() |
删除首尾空格 |
replace(old, new) |
替换子字符串 |
split(sep) |
按分隔符分割 |
join(iterable) |
将可迭代对象连接成字符串 |
五、输入输出函数
1. input() 函数
- 功能:获取键盘输入的数据
- 用法 :
变量 = input("提示信息") - ⚠️ 注意 :返回值始终为字符串类型
python
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:")) # 需要类型转换
2. print() 函数
- 功能:输出数据到控制台
- 用法 :
print(数据)或print(数据1, 数据2, ...)
python
print("Hello World")
print("姓名:", name, "年龄:", age)
六、类型转换
| 函数 | 说明 | 示例 |
|---|---|---|
int() |
转换为整数 | int("123") → 123 |
float() |
转换为浮点数 | float("3.14") → 3.14 |
str() |
转换为字符串 | str(123) → "123" |
bool() |
转换为布尔值 | bool(1) → True |
list() |
转换为列表 | list("abc") → ['a', 'b', 'c'] |
tuple() |
转换为元组 | tuple([1, 2]) → (1, 2) |
set() |
转换为集合 | set([1, 2, 2]) → {1, 2} |
七、运算符
1. 算术运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
+ |
加 | 5 + 3 = 8 |
- |
减 | 5 - 3 = 2 |
* |
乘 | 5 * 3 = 15 |
/ |
除(浮点结果) | 5 / 2 = 2.5 |
// |
整除 | 5 // 2 = 2 |
% |
取余 | 5 % 2 = 1 |
** |
幂运算 | 2 ** 3 = 8 |
2. 赋值运算符
| 运算符 | 等价写法 | 示例 |
|---|---|---|
= |
a = b |
直接赋值 |
+= |
a = a + b |
num += 2 |
-= |
a = a - b |
num -= 2 |
*= |
a = a * b |
num *= 2 |
/= |
a = a / b |
num /= 2 |
//= |
a = a // b |
num //= 2 |
%= |
a = a % b |
num %= 2 |
**= |
a = a ** b |
num **= 2 |
3. 比较运算符
| 运算符 | 含义 |
|---|---|
== |
等于 |
!= |
不等于 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
4. 逻辑运算符
| 运算符 | 含义 | 说明 |
|---|---|---|
and |
与 | 两边都为 True 才返回 True |
or |
或 | 两边有一个为 True 就返回 True |
not |
非 | 取反 |
5. 成员运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
in |
存在 | "a" in "abc" → True |
not in |
不存在 | "d" not in "abc" → True |
6. 身份运算符
| 运算符 | 含义 | 说明 |
|---|---|---|
is |
同一对象 | 比较内存地址是否相同 |
is not |
不同对象 |
八、流程控制语句
1. 条件判断语句
1.1 if 语句
python
if 条件:
# 条件成立时执行
代码块
1.2 if...else 语句
python
if 条件:
# 条件成立时执行
else:
# 条件不成立时执行
1.3 if...elif...else 语句
python
if 条件1:
# 条件1成立时执行
elif 条件2:
# 条件2成立时执行
else:
# 以上条件都不成立时执行
1.4 match...case 语句(Python 3.10+)
python
match 表达式:
case value1:
# 匹配 value1 时执行
case value2 | value3:
# 匹配 value2 或 value3 时执行
case _:
# 默认情况(相当于 else)
2. 循环语句
2.1 while 循环
python
while 条件:
# 条件成立时重复执行
代码块
else:
# 循环正常结束时执行(非 break 退出)
2.2 for 循环
python
for 变量 in 可迭代对象:
# 遍历可迭代对象
代码块
else:
# 循环正常结束时执行(非 break 退出)
九、数据容器
1. 列表(List)
定义 :[元素1, 元素2, 元素3, ...]
特点:
- ✅ 可以存储不同类型的元素
- ✅ 元素有序 、可重复
- ✅ 可以修改(增删改)
- 索引从
0开始,负索引从-1开始
切片语法 :列表[起始索引:结束索引:步长]
- 起始索引默认为
0 - 结束索引默认为列表长度(不包含该位置)
- 步长默认为
1
常用方法:
| 方法 | 功能 |
|---|---|
append(x) |
在末尾添加元素 x |
insert(i, x) |
在索引 i 处插入元素 x |
remove(x) |
删除第一个值为 x 的元素 |
pop([i]) |
删除并返回索引 i 的元素(默认最后一个) |
clear() |
清空列表 |
sort() |
排序(原地修改) |
reverse() |
反转列表 |
count(x) |
统计元素 x 出现的次数 |
index(x) |
返回元素 x 首次出现的索引 |
extend(iterable) |
在末尾添加多个元素 |
2. 元组(Tuple)
定义 :(元素1, 元素2, 元素3, ...) 或 元素1, 元素2
特点:
- ✅ 可以存储不同类型的元素
- ✅ 元素有序 、可重复
- ❌ 不可修改(创建后不能增删改)
- 索引从
0开始
切片语法:同列表
常用方法:
| 方法 | 功能 |
|---|---|
count(x) |
统计元素 x 出现的次数 |
index(x) |
返回元素 x 首次出现的索引 |
组包与解包:
python
# 组包:多个值组合成元组
t = 1, 2, 3 # t 是 (1, 2, 3)
# 解包:元组元素分别赋值给变量
a, b, c = (1, 2, 3) # a=1, b=2, c=3
# 扩展解包
x, *y, z = (1, 2, 3, 4, 5) # x=1, y=[2, 3, 4], z=5
3. 集合(Set)
定义 :{元素1, 元素2, 元素3, ...}
特点:
- ✅ 可以存储不同类型的元素
- ❌ 元素无序 、不重复(自动去重)
- ✅ 可以修改
- ⚠️ 不支持索引和切片
空集合 :必须使用 set()({} 表示空字典)
常用方法:
| 方法 | 功能 |
|---|---|
add(x) |
添加元素 x |
remove(x) |
删除元素 x(不存在会报错) |
discard(x) |
删除元素 x(不存在不报错) |
clear() |
清空集合 |
copy() |
复制集合 |
union(other) |
并集 |
intersection(other) |
交集 |
difference(other) |
差集 |
symmetric_difference(other) |
对称差集 |
4. 字典(Dict)
定义 :{"键1": 值1, "键2": 值2, ...}
特点:
- 存储键值对
- 键(key)必须是不可变类型(字符串、数字、元组)
- 键必须唯一,值可以重复
- Python 3.7+ 保持插入顺序
常用方法:
| 方法 | 功能 |
|---|---|
get(key, default) |
获取键的值,不存在返回 default(默认 None) |
keys() |
获取所有键 |
values() |
获取所有值 |
items() |
获取所有键值对(元组形式) |
update(dict) |
更新字典 |
pop(key) |
删除并返回指定键的值 |
popitem() |
删除并返回最后一个键值对 |
clear() |
清空字典 |
copy() |
复制字典 |
setdefault(key, default) |
获取值,不存在则设置默认值 |
操作示例:
python
d = {"name": "张三", "age": 20}
# 访问值
print(d["name"]) # 张三
print(d.get("gender")) # None
# 添加/修改
d["gender"] = "男" # 添加
d["age"] = 21 # 修改
# 删除
del d["gender"] # 删除键值对
十、变量作用域
1. 全局变量
- 在函数外部定义的变量
- 可以在整个模块中使用
2. 局部变量
- 在函数内部定义的变量
- 只能在函数内部使用
3. global 关键字
- 在函数内部声明使用全局变量
- ⚠️ 尽量避免使用,优先使用局部变量和返回值
python
count = 0
def increment():
global count
count += 1
十一、函数参数
1. 位置参数
- 按参数的顺序传递
python
def greet(name, age):
print(f"{name} is {age} years old")
greet("Alice", 25) # 位置对应
2. 关键字参数
- 通过"形参名=值"的方式传递
python
greet(age=25, name="Alice") # 顺序无关
3. 默认参数
- 定义时给参数赋默认值
- ⚠️ 默认参数必须放在非默认参数之后
python
def greet(name, age=18):
print(f"{name} is {age} years old")
greet("Bob") # 使用默认值 18
greet("Alice", 25) # 传入值 25
4. 不定长参数
4.1 *args - 位置不定长参数
- 接收任意数量的位置参数
- 打包成元组
python
def func(*args):
print(args) # 元组
func(1, 2, 3) # (1, 2, 3)
4.2 **kwargs - 关键字不定长参数
- 接收任意数量的关键字参数
- 打包成字典
python
def func(**kwargs):
print(kwargs) # 字典
func(a=1, b=2) # {'a': 1, 'b': 2}
5. 参数顺序规则
python
def func(普通参数, 默认参数=值, *args, **kwargs):
pass
十二、类型注解
1. 变量类型注解
python
# 基本类型
a: int = 10
b: float = 3.14
c: str = "hello"
d: bool = True
# 容器类型
lst: list = [1, 2, 3]
t: tuple = (1, 2)
s: set = {1, 2, 3}
dict: dict = {"a": 1}
# 联合类型(Python 3.10+)
x: int | str = 10 # 可以是 int 或 str
2. 函数类型注解
python
def add(a: int, b: int) -> int:
"""
返回两个整数的和
:param a: 第一个整数
:param b: 第二个整数
:return: 两数之和
"""
return a + b
3. 类型注解的作用
- 提高代码可读性
- 帮助 IDE 进行代码提示
- 便于静态类型检查(如使用 mypy)
- ⚠️ 类型注解不会在运行时强制执行
附录:数据容器对比表
| 特性 | 列表 list | 元组 tuple | 集合 set | 字典 dict |
|---|---|---|---|---|
| 定义符号 | [] |
() |
{} |
{key:value} |
| 是否有序 | ✅ 是 | ✅ 是 | ❌ 否 | ✅ 是(3.7+) |
| 是否可重复 | ✅ 是 | ✅ 是 | ❌ 否 | 键不可重复 |
| 是否可修改 | ✅ 是 | ❌ 否 | ✅ 是 | ✅ 是 |
| 索引访问 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | 通过键访问 |
| 切片 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 适用场景 | 需要修改的数据序列 | 固定数据、保护数据 | 去重、集合运算 | 键值对映射 |