跳到主要内容

Python3 基本数据类型

标准数据类型

Python3 中常见的数据类型有:

  • Number(数字)
  • String(字符串)
  • bool(布尔类型)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

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

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

此外还有一些高级的数据类型,如: 字节数组类型(bytes)。

# 数字类型
num_int = 42
num_float = 3.14159
num_complex = 1 + 2j

# 布尔类型
is_valid = True
is_finished = False

# 字符串
greeting = "Hello, World!"
multiline_str = """这是
多行
字符串"""

# 列表
fruits = ['apple', 'banana', 'cherry']
fruits.append('orange')

# 元组
colors = ('red', 'green', 'blue')

# 集合
unique_numbers = {1, 2, 3, 2, 1} # 实际存储 {1, 2, 3}

# 字典
person = {
'name': 'John',
'age': 30,
'city': 'New York'
}

# 打印示例
print("整数:", num_int)
print("浮点数:", num_float)
print("复数:", num_complex)
print("布尔值:", is_valid, is_finished)
print("字符串:", greeting)
print("多行字符串:", multiline_str)
print("列表:", fruits)
print("元组:", colors)
print("集合:", unique_numbers)
print("字典:", person)

Number

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

在 Python 3 中,bool 是 int 的子类,因此布尔值可以被看作整数来使用,其中 True 等价于 1。

issubclass(bool, int) # True

True + 1 # 2
False + 1 # 1

True == 1 # True
False == 0 # True

内置的 type() 函数可以用来查询变量所指的对象类型。

a, b, c, d = 20, 5.5, True, 4+3j
print(type(a), type(b), type(c), type(d))
# <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

此外还可以用 isinstance 来判断:

a = 111
isinstance(a, int) # True

Python 的数字类型(如 int, float, decimal.Decimal)提供了一系列内置方法,用于数学运算、类型转换、进制处理等操作。以下是主要数字类型的方法及示例:


1. 通用方法(适用于 intfloat

数学运算
方法/操作符说明示例
+, -, *, /加减乘除3 + 2 → 5
//, %取整除法、取模7 // 2 → 3, 7 % 2 → 1
**幂运算2 ** 3 → 8
abs(x)绝对值abs(-5) → 5
round(x[, n])四舍五入(n为小数位数)round(3.14159, 2) → 3.14
比较运算
操作符说明示例
==, !=, >, <等于、不等于、大于、小于3 > 2 → True
类型转换
方法说明示例
int(x)转为整数int(3.7) → 3
float(x)转为浮点数float(3) → 3.0
bool(x)转为布尔值bool(0) → False

2. int 的独有方法

进制转换
方法说明示例
bin(x)转二进制字符串bin(10) → '0b1010'
oct(x)转八进制字符串oct(10) → '0o12'
hex(x)转十六进制字符串hex(255) → '0xff'
int(s, base)从字符串按进制解析int('1010', 2) → 10
位运算
操作符说明示例
&, `, ^`按位与、或、异或
<<, >>左移、右移4 << 1 → 8

3. float 的注意事项

  • 精度问题:浮点数运算可能有误差(如 0.1 + 0.2 ≠ 0.3),需用 decimal 模块处理精确计算。
  • 特殊值
float('inf')  # 正无穷
float('-inf') # 负无穷
float('nan') # 非数字

4. decimal.Decimal 的方法

用于高精度十进制运算(需导入 decimal 模块):

方法说明示例
Decimal(str)精确初始化Decimal('0.1') + Decimal('0.2') → Decimal('0.3')
quantize()控制舍入规则Decimal('3.14159').quantize(Decimal('0.00')) → Decimal('3.14')

5. 其他实用函数

函数说明示例
divmod(a, b)返回商和余数divmod(7, 3) → (2, 1)
pow(x, y[, mod])幂运算(可带模)pow(2, 3, 3) → 2
math 模块高级数学函数(如 sqrt, sinimport math; math.sqrt(4) → 2.0

示例代码

# 整数操作
num = 10
print(bin(num)) # 输出: '0b1010'
print(num.bit_length()) # 输出: 4(二进制位数)

# 浮点数精度控制
from decimal import Decimal, getcontext
getcontext().prec = 6 # 设置精度
result = Decimal('1') / Decimal('7')
print(result) # 输出: 0.142857

# 数学函数
import math
print(math.gcd(12, 15)) # 输出: 3(最大公约数)

总结

  • int:进制转换、位运算。
  • float:常规数学运算(注意精度问题)。
  • decimal.Decimal:精确十进制计算。
  • 通用方法:比较、类型转换、基本运算。

String

  • Python 中单引号 ' 和双引号 " 使用完全相同。
  • 使用三引号('''""")可以指定一个多行字符串。
  • 转义符 \。
  • 反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r"this is a line with \n"\n 会显示,并不是换行。
  • 按字面意义级联字符串,如 "this " "is " "string" 会被自动转换为 this is string。
  • 字符串可以用 + 运算符连接在一起,用 * 运算符重复。
  • Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
  • Python 中的字符串不能改变。
  • Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
  • 字符串切片 str[start:end],其中 start(包含)是切片开始的索引,end(不包含)是切片结束的索引。
  • 字符串的切片可以加上步长参数 step,语法格式如下:str[start:end:step]

#!/usr/bin/python3

str='123456789'

print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第六个的字符(不包含)
print(str[2:]) # 输出从第三个开始后的所有字符
print(str[1:5:2]) # 输出从第二个开始到第五个且每隔一个的字符(步长为2)
print(str * 2) # 输出字符串两次
print(str + '你好') # 连接字符串

print('------------------------------')

print('hello\nrunoob') # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nrunoob') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义

快速查看方法列表

# 列出所有非魔法方法
str_methods = [method for method in dir(str) if not method.startswith('__')]
print("字符串方法列表:", str_methods)

# 输出某个方法的帮助
help(str.upper) # 查看 upper() 的用法

这段代码使用了 列表推导式(List Comprehension) 来获取 Python 字符串类型(**str**)的所有公开方法,并过滤掉以双下划线 __ 开头的魔法方法(Magic Methods)

集合(Set)和列表(List)的区别

集合(Set)和列表(List)是 Python 中两种不同的数据结构,它们有以下主要区别:

特性列表(List)集合(Set)
有序性有序,保持元素插入顺序无序,不保证元素顺序
可变性可变可变
重复元素允许重复元素不允许重复元素(自动去重)
表示符号使用方括号 []使用花括号 {}
索引访问支持索引访问(如 list[0]
不支持索引访问
查找效率O(n)O(1)(基于哈希表实现)
常用方法append(), insert(), remove(), pop()add(), remove(), union(), intersection()
内存占用较少较多(因为需要维护哈希表)
应用场景需要保持顺序或允许重复时使用需要快速查找或去重时使用