当前位置: 首页 > news >正文

Python第三节基本数据类型详解与使用指南

精通前端vue、react全家桶,以及微信小程序、钉钉支付宝小程序、uniapp,目前在学习python,欢迎各位新老朋友留言私聊

Python 是一种动态类型语言,拥有丰富的数据类型系统。了解这些数据类型及其特性对编写高效、正确的代码至关重要。

1. 数字类型 (Numeric Types)

整数 (int)

    # 整数表示x = 10          # 十进制y = 0b1010      # 二进制 (10)z = 0o12        # 八进制 (10)w = 0xA         # 十六进制 (10)# 大整数支持(无长度限制)big_num = 123456789012345678901234567890# 注意事项:
# 1. 整数除法使用 // 运算符
result = 7 // 2  # 结果为 3
# 2. 幂运算使用 **
power = 2 ** 3   # 8

浮点数 (float)

# 浮点数表示
f1 = 3.14
f2 = 2.0
f3 = 4e5        # 科学计数法 400000.0# 注意事项:
# 1. 浮点数精度问题(所有语言通用)
print(0.1 + 0.2)  # 0.30000000000000004
# 2. 需要高精度计算时使用 decimal 模块
from decimal import Decimal
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)      # 0.3

复数 (complex)

# 复数表示
c1 = 3 + 4j
c2 = complex(2, -5)  # 2-5j# 访问实部和虚部
print(c1.real)  # 3.0
print(c1.imag)  # 4.0

2. 布尔类型 (bool)

# 布尔值
t = True
f = False# 注意事项:
# 1. 布尔值是整数的子类(True=1, False=0)
print(True + 1)  # 2
# 2. 所有对象在布尔上下文中都有真值
# 假值:False, 0, 0.0, "", [], (), {}, None

3. 字符串 (str)

# 字符串创建
s1 = '单引号'
s2 = "双引号"
s3 = '''多行
字符串'''
s4 = """也是多行
字符串"""# 字符串操作
name = "Alice"
greeting = f"Hello, {name}!"  # f-string (Python 3.6+)
length = len(name)            # 获取长度
sub = name[1:4]               # 切片 'lic'# 注意事项:
# 1. 字符串是不可变对象
# name[0] = 'B'  # 会报错
# 2. 原始字符串(忽略转义)
path = r"C:\Users\Name"  # 反斜杠不会被转义

4. 列表 (list)

# 列表创建
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]# 列表操作
numbers.append(6)        # 添加元素
numbers.insert(0, 0)     # 插入元素
last = numbers.pop()     # 移除并返回最后一个元素
sublist = numbers[1:4]   # 切片 [2, 3, 4]# 列表推导式
squares = [x**2 for x in range(10)]# 注意事项:
# 1. 列表是可变的
# 2. 浅拷贝与深拷贝
list1 = [1, 2, [3, 4]]
list2 = list1.copy()     # 浅拷贝
list1[2][0] = 99        # 会影响list2

5. 元组 (tuple)

# 元组创建
point = (10, 20)
single = (5,)           # 单个元素的元组需要逗号
empty = ()              # 空元组# 元组操作
x, y = point            # 元组解包
first = point[0]        # 访问元素# 注意事项:
# 1. 元组是不可变的
# point[0] = 5  # 会报错
# 2. 元组比列表更轻量,适合存储不变数据

6. 字典 (dict)

# 字典创建
person = {"name": "Alice", "age": 30, "city": "New York"}
person2 = dict(name="Bob", age=25)# 字典操作
person["email"] = "alice@example.com"  # 添加/更新
age = person.get("age")                # 安全获取
keys = person.keys()                   # 获取所有键
values = person.values()               # 获取所有值# 字典推导式
squares = {x: x**2 for x in range(5)}# 注意事项:
# 1. 字典键必须是不可变类型(字符串、数字、元组)
# 2. Python 3.7+ 中字典保持插入顺序

7. 集合 (set)

# 集合创建
fruits = {"apple", "banana", "cherry"}
numbers = set([1, 2, 3, 4, 5])# 集合操作
fruits.add("orange")          # 添加元素
fruits.remove("banana")       # 移除元素
union = fruits | numbers      # 并集
intersection = fruits & numbers  # 交集# 集合推导式
even_squares = {x**2 for x in range(10) if x**2 % 2 == 0}# 注意事项:
# 1. 集合中的元素必须是不可变的
# 2. 集合不保持顺序

8. 特殊类型

NoneType

# None 表示空值或无值
value = None# 注意事项:
# 1. None 是单例对象,所有 None 值都是同一个对象
# 2. 常用于初始化变量或作为函数默认返回值

字节 (bytes) 和字节数组 (bytearray)

# 字节(不可变)
b = b"hello"
# 字节数组(可变)
ba = bytearray(b"hello")
ba[0] = 104  # 可以修改# 注意事项:
# 1. 用于处理二进制数据
# 2. 与字符串转换需要指定编码
s = b.decode('utf-8')
b2 = s.encode('utf-8')

数据类型检查与转换

# 类型检查
x = 10
print(type(x))          # <class 'int'>
print(isinstance(x, int))  # True# 类型转换
num_str = "123"
num_int = int(num_str)      # 转换为整数
num_float = float(num_str)  # 转换为浮点数
str_num = str(123)          # 转换为字符串
list_range = list(range(5)) # 转换为列表

注意事项总结

可变与不可变对象:

可变:列表、字典、集合、字节数组
不可变:数字、字符串、元组、冻结集合(frozenset)、字节

赋值与拷贝:

  1. 赋值是引用传递(多个变量指向同一对象)
  2. 浅拷贝创建新对象,但嵌套对象仍共享
  3. 深拷贝完全独立(使用copy.deepcopy()

比较操作:

== 比较值是否相等
is 比较是否是同一对象

性能考虑:

  1. 列表适合顺序访问和修改
  2. 元组更轻量,适合不变数据
  3. 集合和字典的查找操作是O(1)复杂度

类型提示(Python 3.5+):

def greet(name: str) -> str:return f"Hello, {name}"
http://www.dtcms.com/a/389697.html

相关文章:

  • 【indextts2】之四:ubuntu24.04 经常跑满12G 显存、音色与录制关系很大
  • 【学习笔记】稳定币的技术原理与信任逻辑
  • 为 Elasticsearch Ruby Client 引入 ES|QL 查询生成器
  • 平安养老险陕西分公司积极开展“保障金融权益,助力美好生活”金融教育宣传周活动
  • 多线程的特点与同步、互斥锁
  • 将npm run dev 冷启动从 90s 优化到 8.5s的实践
  • 【附源码】基于SSM的小型银行贷款系统设计与实现
  • X-Forwarded-For
  • 中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
  • GitHub 上 Star 数量前 10 的开源项目管理工具
  • axios函数封装
  • NewSQL——核心原理与内部机制
  • 《从 0 到 1 打通网络服务任督二脉:域名、服务器与多站点配置全攻略》​
  • vue3学习日记(十七):动态路由使用解析
  • SpringBoot 启动流程
  • .NET驾驭Word之力:结构化文档元素操作
  • 解密F5负载均衡:优化网络性能的关键
  • 使用 .NET Core 6 Web API 的 RabbitMQ 消息队列
  • 时空预测论文分享:图时空注意力网络 ConvLSTM 时空演变
  • 千问大模型部署笔记
  • 网络:开源网络协议栈介绍
  • 设计模式(C++)详解—装饰器模式(3)
  • 双重锁的单例模式
  • 管理 Git 项目中子模块的 commit id 的策略
  • 跨境电商API数据采集的流程是怎样的?
  • rust编写web服务07-Redis缓存
  • 第三十三天:高精度运算
  • 写联表查询SQL时筛选条件写在where 前面和后面有啥区别
  • ARM(13) - PWM控制LCD
  • Python基础 3》流程控制语句