第五章 基础数据类型(一)
本章节讲述python的基础数据类型,python的基础数据类型主要包括以下
number(数字)类型用于表示数值数据。Python 提供了多种内置的数字类型,主要包括:
int)
int 类型用于表示整数,可以是正数、负数或零。Python 3 的
int 类型没有大小限制(仅受限于可用内存),因此可以处理非常大的整数。
# 十进制
x =
42
y = -
17
z =
0
# 二进制 (以 0b 或 0B 开头)
binary_num =
0b1010
# 等于十进制的 10
# 八进制 (以 0o 或 0O 开头)
octal_num =
0o17
# 等于十进制的 15
# 十六进制 (以 0x 或 0X 开头)
hex_num =
0xFF
# 等于十进制的 255
# 大整数
big_num =
123456789012345678901234567890
print(
type(big_num))
# <class 'int'>
float)
float 类型用于表示带有小数点的数字(实数)。它们遵循 IEEE 754 双精度浮点数标准,通常有大约 17 位有效数字。
# 普通浮点数
pi =
3.14159
temperature = -
12.5
price =
9.99
# 科学计数法
scientific =
1.5e-3
# 等于 0.0015
large_float =
2.5e8
# 等于 250000000.0
# 浮点数精度问题示例
print(
0.1 +
0.2)
# 输出: 0.30000000000000004
print(
0.1 +
0.2 ==
0.3)
# 输出: False
# 使用 decimal 模块解决精度问题
from decimal
import Decimal
print(Decimal(
'0.1') + Decimal(
'0.2') == Decimal(
'0.3'))
# True
complex)
complex 类型用于表示复数,形式为
a + bj,其中
a 是实部,
b 是虚部,
j 表示虚数单位(√-1)。
.real 和
.imag 属性访问实部和虚部
# 复数
z1 =
3 +
4j
z2 = -
2.5 +
1.7j
z3 =
5j
# 只有虚部
z4 =
3.0 +
0j
# 只有实部
# 访问实部和虚部
print(z1.real)
# 3.0
print(z1.imag)
# 4.0
# 复数运算
z_sum = z1 + z2
print(z_sum)
# (0.5+5.7j)
# 获取模长
import cmath
print(
abs(z1))
# 5.0
print(cmath.phase(z1))
# 获取相位
bool)虽然
bool 类型通常被视为逻辑类型,但在 Python 中它是
int 的子类。
True 和
False 分别等价于整数 1 和 0。
# 布尔值
is_active =
True
is_done =
False
# 布尔值是 int 的子类
print(
isinstance(
True,
int))
# True
print(
True +
1)
# 2
print(
False *
10)
# 0
# 在条件语句中的使用
if
True:
print(
"这总是会执行")
if
1:
print(
"非零数值被视为 True")
Python 提供了内置函数在不同数字类型之间进行转换。
# int() - 转换为整数
print(
int(
3.7))
# 3 (向零取整)
print(
int(
"42"))
# 42
print(
int(
True))
# 1
# float() - 转换为浮点数
print(
float(
42))
# 42.0
print(
float(
"3.14"))
# 3.14
print(
float(
True))
# 1.0
# complex() - 转换为复数
print(
complex(
3,
4))
# (3+4j)
print(
complex(
"2+3j"))
# (2+3j)
# 检查类型
x =
42
y =
3.14
z =
2 +
3j
print(
type(x))
# <class 'int'>
print(
type(y))
# <class 'float'>
print(
type(z))
# <class 'complex'>
# isinstance() 检查
print(
isinstance(x,
int))
# True
print(
isinstance(y,
float))
# True
print(
isinstance(z,
complex))
# True
# 常用数学运算
a, b =
10,
3
print(a + b)
# 13
print(a - b)
# 7
print(a * b)
# 30
print(a / b)
# 3.333... (结果总是 float)
print(a // b)
# 3 (整除)
print(a % b)
# 1 (取余)
print(a ** b)
# 1000 (幂运算)
Python 提供了许多内置的数学函数:
# 基本数学函数
print(
abs(-
5))
# 5
print(
round(
3.14159,
2))
# 3.14
print(
pow(
2,
3))
# 8
print(
max(
1,
5,
3))
# 5
print(
min(
1,
5,
3))
# 1
# 需要导入 math 模块
import math
print(math.pi)
# 3.141592653589793
print(math.e)
# 2.718281828459045
print(math.sqrt(
16))
# 4.0
print(math.floor(
3.7))
# 3
print(math.ceil(
3.2))
# 4
print(math.log(
10))
# 自然对数
print(math.log10(
100))
# 以10为底的对数
字符串(String) 在python中是一种用于表示文本数据的基本数据类型。字符串是由一系列字符组成的不可变序列。
Python 中有多种方式创建字符串:
# 使用单引号
s1 =
'Hello World'
# 使用双引号
s2 =
"Hello World"
# 使用三重引号(可以跨行)
s3 =
"""这是一个
多行字符串"""
s4 =
'''也可以
这样写'''
# 空字符串
empty_str =
""
注意:单引号和双引号功能相同,选择一种风格并保持一致。三重引号常用于文档字符串(docstring)或多行文本。
for 循环遍历字符串中的每个字符。
text =
"Python"
print(text[
0])
# P (第一个字符)
print(text[-
1])
# n (最后一个字符)
print(text[
5])
# n
语法:
string[start:end:step]
text =
"Hello World"
# 基本切片
print(text[
0:
5])
# Hello (索引0到4)
print(text[
6:])
# World (从索引6到末尾)
print(text[:
5])
# Hello (从开头到索引4)
# 步长
print(text[::
2])
# HloWrd (每隔一个字符)
print(text[::-
1])
# dlroW olleH (反转字符串)
# 负索引切片
print(text[-
5:])
# World
# 使用 + 操作符
greeting =
"Hello" +
" " +
"World"
# 使用 join() 方法(推荐,效率更高)
words = [
"Hello",
"Beautiful",
"World"]
sentence =
" ".join(words)
# "Hello Beautiful World"
repeat = "Ha" * 3 # "HaHaHa"
length = len("Python") # 6
Python 提供了丰富的内置方法来操作字符串:
text =
" Hello World "
# 大小写转换
print(text.upper())
# " HELLO WORLD "
print(text.lower())
# " hello world "
print(text.capitalize())
# " hello world " -> " hello world " (首字母大写)
print(text.title())
# " Hello World "
# 去除空白
print(text.strip())
# "Hello World"
print(text.lstrip())
# "Hello World " (左)
print(text.rstrip())
# " Hello World" (右)
# 查找与替换
print(text.find(
"World"))
# 8 (找到的索引,未找到返回-1)
print(text.replace(
"World",
"Python"))
# " Hello Python "
# 判断方法
print(
"Hello".isalpha())
# True (是否全是字母)
print(
"123".isdigit())
# True (是否全是数字)
print(
"hello".startswith(
"he"))
# True
print(
"world".endswith(
"ld"))
# True
# 分割与合并
sentence =
"apple,banana,orange"
fruits = sentence.split(
",")
# ['apple', 'banana', 'orange']
joined =
"-".join([
"a",
"b",
"c"])
# "a-b-c"
name =
"Alice"
age =
25
message =
f"我的名字是
{name},今年
{age} 岁。"
print(message)
# 我的名字是 Alice,今年 25 岁。
.format() 方法
message =
"我的名字是 {},今年 {} 岁。".
format(name, age)
message =
"我的名字是 {n},今年 {a} 岁。".
format(n=name, a=age)
message = "我的名字是 %s,今年 %d 岁。" % (name, age)
使用反斜杠
\ 来表示特殊字符:
| 转义字符 | 含义 |
\\ |
反斜杠 |
\' |
单引号 |
\" |
双引号 |
\n |
换行 |
\t |
制表符 |
\r |
回车 |
print(
"Hello\nWorld")
# 换行
print(
"He said: \"Hello\"")
# He said: "Hello"
print(
"C:\\Users\\Name")
# 路径
**原始字符串(Raw String)**:在字符串前加
r,忽略转义字符。
path = r"C:\Users\Name\Documents" # 不需要双写反斜杠
text =
"Hello"
# text[0] = "h" # ❌ 错误!字符串不可变
# 正确的做法是创建新字符串
new_text =
"h" + text[
1:]
# "hello"
for char
in
"Python":
print(char)
if
"hello"
in
"hello world":
print(
"找到了!")
text =
"hello"
print(text.count(
"l"))
# 2
在 Python 中, 元组(Tuple) 是一种有序、不可变的序列数据类型。它与列表(List)非常相似,但最大的区别在于 一旦创建,元组的内容不能被修改。
元组可以通过以下几种方式创建:
# 使用圆括号 ()
t1 = (
1,
2,
3,
4,
5)
t2 = (
"apple",
"banana",
"cherry")
t3 = (
1,
"hello",
3.14,
True)
# 单个元素的元组需要加逗号
single = (
42,)
# 注意逗号,否则会被当作普通括号
print(
type(single))
# <class 'tuple'>
# 省略括号(但不推荐,可读性差)
t4 =
1,
2,
3
print(
type(t4))
# <class 'tuple'>
# 空元组
empty_tuple = ()
# 使用 tuple() 构造函数
t5 =
tuple([
1,
2,
3])
# 从列表创建
t6 =
tuple(
"hello")
# 从字符串创建 -> ('h', 'e', 'l', 'l', 'o')
| 特性 | 说明 |
| 有序(Ordered) | 元素有固定的顺序,可以通过索引访问 |
| 不可变(Immutable) | 一旦创建,不能添加、删除或修改元素 |
| 可重复(Allow Duplicates) | 可以包含重复的元素 |
| 可哈希(Hashable) | 如果元组中的所有元素都是不可变的,那么元组本身是可哈希的,可以用作字典的键或集合的元素 |
t = (
10,
20,
30,
40,
50)
print(t[
0])
# 10
print(t[-
1])
# 50 (最后一个)
print(t[
1:
4])
# (20, 30, 40)
print(t[::
2])
# (10, 30, 50)
print(t[::-
1])
# (50, 40, 30, 20, 10) 反转
t1 = (
1,
2)
t2 = (
3,
4)
t3 = t1 + t2
# (1, 2, 3, 4)
t = (1, 2) * 3 # (1, 2, 1, 2, 1, 2)
if
2
in t:
print(
"2 在元组中")
length = len(t) # 获取元组长度
由于元组不可变,它的方法很少:
t = (
1,
2,
3,
2,
4,
2)
# count() - 统计某个元素出现的次数
print(t.count(
2))
# 3
# index() - 查找元素第一次出现的索引
print(t.index(
3))
# 2
# print(t.index(99)) # ValueError: tuple.index(x): x not in tuple
元组解包是 Python 中非常强大和常用的功能。
# 基本解包
coordinates = (
3,
4)
x, y = coordinates
print(x, y)
# 3 4
# 函数返回多个值
def
get_name_age():
return
"Alice",
25
name, age = get_name_age()
# 忽略某些值
data = (
1,
2,
3,
4,
5)
a, b, *rest = data
# a=1, b=2, rest=[3,4,5]
print(rest)
# [3, 4, 5]
# 只取首尾
first, *middle, last = (
1,
2,
3,
4,
5)
print(first, middle, last)
# 1 [2, 3, 4] 5
# ✅ 元组可以作为字典的键
locations = {
(
0,
0):
"原点",
(
3,
4):
"点A",
(-
1,
2):
"点B"
}
def
min_max(
numbers):
return
min(numbers),
max(numbers)
minimum, maximum = min_max([
1,
2,
3,
4,
5])
# 防止意外修改
days_of_week = (
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday")
# days_of_week[0] = "Mon" # ❌ 会报错,保护数据
print("坐标: %d, %d" % (3, 4))
t = (
1, [
2,
3],
4)
t[
1].append(
5)
# ✅ 允许,因为修改的是列表
print(t)
# (1, [2, 3, 5], 4)
# t[1] = [2, 3, 4] # ❌ 不允许,因为要替换元组元素
本文主要对python的基本数据类型中的不可变数据类型进行相关的学习,下章节针对可变数据类型继续相关的学习。希望大家一起努力学习,掌握基础才能更深的灵活运用后期的人工智能的实践工作。
相关资料免费获取:
公众号:咚咚王
艺术二维码.png
《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen) 》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70048224/viewspace-3099440/ ,如需转载,请注明出处,否则将追究法律责任。