python数据类型总结

news/2024/10/21 6:07:20/

标准数据类型

Python 有以下几种标准数据类型:

  • 整数(int):表示整数值,如 1, -5, 0 等。
  • 浮点数(float):表示小数值,如 3.14, -0.01, 1.0 等。
  • 字符串(str):表示文本数据,如 “Hello”, “Python”, “123” 等。
  • 列表(list):表示一个有序的元素集合,可以存储不同类型的数据,如 [1, 2, 3], [“a”, “b”, “c”], [1, “a”, 3.14] 等。
  • 字典(dict):表示一个无序的键值对集合,可以通过键来访问或修改对应的值,如 {“name”: “Alice”, “age”: 18}, {“a”: 1, “b”: 2, “c”: 3} 等。

每种数据类型都有自己的特点和使用场景。例如:

  • 整数和浮点数可以用来进行数值计算,如加减乘除等。
  • 字符串可以用来处理文本数据,如分割,拼接,替换等。
  • 列表可以用来存储多个相关的数据,如一组学生的成绩,一组城市的名称等。
  • 字典可以用来存储多个具有属性的数据,如一本书的标题,作者,出版年份等。

为了更好地理解每种数据类型的差异,可以通过示例代码来展示它们的用法。例如:

# 创建一个整数变量
x = 10
# 创建一个浮点数变量
y = 3.14
# 创建一个字符串变量
z = "Hello"
# 创建一个列表变量
a = [1, 2, 3]
# 创建一个字典变量
b = {"name": "Alice", "age": 18}# 打印每个变量的类型和值
print(type(x), x)
print(type(y), y)
print(type(z), z)
print(type(a), a)
print(type(b), b)# 对整数和浮点数进行加法运算
print(x + y)# 对字符串进行拼接运算
print(z + " Python")# 对列表进行索引和切片操作
print(a[0]) # 获取第一个元素
print(a[1:3]) # 获取第二个和第三个元素# 对字典进行键值访问和修改操作
print(b["name"]) # 获取"name"对应的值
b["age"] = 19 # 修改"age"对应的值
print(b)

元组与集合

除了标准数据类型,Python 还提供了一些特殊数据类型,如集合(set)和元组(tuple)³⁵。

  • 集合(set):表示一个无序的元素集合,可以存储不同类型的数据,但是不能有重复的元素,如 {1, 2, 3}, {“a”, “b”, “c”}, {1, “a”, 3.14} 等。
  • 元组(tuple):表示一个有序的元素集合,可以存储不同类型的数据,但是不能修改元素的值,如 (1, 2, 3), (“a”, “b”, “c”), (1, “a”, 3.14) 等。

每种数据类型都有自己的特点和使用场景。例如:

  • 集合(set)可以用来进行集合运算,如并集,交集,差集等。
  • 元组(tuple)可以用来存储不可变的数据,如一组常量,一组坐标等。

为了更好地理解每种数据类型的差异,可以通过示例代码来展示它们的用法。例如:

# 创建一个集合变量
c = {1, 2, 3}
# 创建一个元组变量
d = (1, 2, 3)# 打印每个变量的类型和值
print(type(c), c)
print(type(d), d)# 对集合进行并集运算
print(c | {4, 5})# 对元组进行索引操作
print(d[0]) # 获取第一个元素

布尔类型

布尔类型(boolean)是 Python 的内置数据类型之一,用于表示表达式的真值(truth value),即 True 或 False¹²。

  • 布尔类型是整数类型(int)的子类型,True 和 False 在大多数情况下可以当作 0 和 1 来使用,但是在 repr() 和 str() 函数中会显示为 True 和 False³。
  • 布尔类型可以用于比较值,检查身份和成员关系,以及控制程序的流程,如 if 语句和 while 循环。
  • 布尔类型可以通过 bool() 函数从其他数据类型转换而来,一般来说,空值(如空字符串,空列表,None 等)会转换为 False,非空值会转换为 True。

以下是一些关于布尔类型的例子:

# 布尔类型的字面量
a = True
b = False
print(type(a), type(b)) # <class 'bool'> <class 'bool'># 布尔类型的算术运算
c = a + b # True + False 等于 1 + 0
print(c) # 1# 布尔类型的比较运算
d = a == b # True == False 返回 False
print(d) # False# 布尔类型的逻辑运算
e = a and b # True and False 返回 False
print(e) # False# 布尔类型的条件语句
if a:print("a is True")
else:print("a is False")
# a is True# 布尔类型的转换
f = bool("") # 空字符串转换为 False
print(f) # Falseg = bool([1, 2, 3]) # 非空列表转换为 True
print(g) # True

可变类型与不可变类型

在 Python 中,数据类型可以分为可变类型(mutable)和不可变类型(immutable)¹²³。

  • 可变类型(mutable):指的是可以在原地修改值或数据的类型,如列表(list),字典(dict),集合(set)等。
  • 不可变类型(immutable):指的是不可以在原地修改值或数据的类型,如整数(int),浮点数(float),字符串(str),元组(tuple)等。

可变类型和不可变类型的区别主要体现在以下方面:

  • 可变类型的对象在修改后,其内存地址不会改变,而不可变类型的对象在修改后,会创建一个新的对象,并分配一个新的内存地址。
  • 可变类型的对象可以作为字典的键或集合的元素,而不可变类型的对象不能,因为字典和集合要求键或元素是可哈希的,而可变类型的对象是不可哈希的。
  • 可变类型和不可变类型对函数参数传递的方式也有影响,因为 Python 的函数参数传递是按引用传递的,所以如果参数是可变类型的对象,那么函数内部对该对象的修改会影响到函数外部,而如果参数是不可变类型的对象,那么函数内部对该对象的修改不会影响到函数外部。

总结

有序类型(可以索引)

可按照一定顺序排序的数据类型

1、列表(list ): 多个数据 存储数据:可以放任任意的数据类型
2、元组( tuple): 多个数据 存储数据:可以放任任意的数据类型 不能修改和添加里面的值 私密的数据
3、字符串 (str ): 一个数据 描述性质:表示名字

散列类型

不可以进行索引取值,主要体现为没有顺序,一盘散沙。

1、集合(set ): 多个数据 ,存储数据:可以放任任意的数据类型, 可变类型,无序。

2、字典 (dict):多个数据 ,存储数据:key里面只能放入不可变类型,最好字符串类型,value里面可以放任任意的数据类型

可变和不可变

1、可变类型(mutable):指的是可以在原地修改值或数据的类型,如列表(list),字典(dict),集合(set)等。
2、不可变类型(immutable):指的是不可以在原地修改值或数据的类型,如整数(int),浮点数(float),字符串(str),元组(tuple),布尔(bool)。但是元组这里有个特例:如果元组中的元素类型是可变类型如list,那么其元组中list中的值却是可以变化的,如下案例:

a_tuple  = ([1,2,3],'hello world',11,('a','b','c'),{1,2,3.14,'你好'},{"student_name_1":"张三","sutdent_name_2":"李四"})print(a_tuple)# 循环遍历一个元组,并输出每个元素的类型
for tuple_one in a_tuple:print(type(tuple_one),tuple_one)# 以下是遍历的输出结果 :# <class 'list'> [1, 2, 3]
# <class 'str'> hello world
# <class 'int'> 11
# <class 'tuple'> ('a', 'b', 'c')
# <class 'set'> {1, 2, 3.14, '你好'}
# <class 'dict'> {'student_name_1': '张三', 'sutdent_name_2': '李四'}# 下面来修改元组中的list
print(id(a_tuple))
a_tuple_list = a_tuple[0]
a_tuple_list.append("新手")
print(a_tuple)
print(id(a_tuple))
print(id(a_tuple[0]))
print(id(a_tuple_list))
b_tuple = a_tuple # 一个元组的浅拷贝,内存地址指向一个,一个改变都改变
b_tuple[0][0] = 2 # 修改了b_tuple a_tuple的值也跟着改变了。
print(id(b_tuple))
print(b_tuple)
print(a_tuple)a_tuple[0][1] = 3 # 修改了a_tuple 同时也修改了b_tupleprint(b_tuple)
print(a_tuple)# 元组的深拷贝import copy# 创建一个元组
original_tuple = (1, 2, 3, [4, 5, 6])# 使用copy模块中的deepcopy()函数进行深拷贝
new_tuple = copy.deepcopy(original_tuple)# 修改深拷贝后的元组中的列表内容
new_tuple[3][0] = 7# 打印原始元组和深拷贝后的元组
print(original_tuple) #(1, 2, 3, [4, 5, 6])
print(new_tuple) # (1, 2, 3, [7, 5, 6])print(id(original_tuple))
print(id(new_tuple))

重复不重复

1、set(集合):不可存在重复的值。

全部数据类型

Python 内置的数据类型总结

  • Numeric - int, long,float, complex
  • String - str
  • Sequence - list, tuple, range
  • Binary - bytes, bytearray, memoryview
  • Mapping - dict
  • Boolean - bool
  • Set - set, frozenset
  • None - NoneType

在这里插入图片描述


http://www.ppmy.cn/news/63960.html

相关文章

深度学习细节总结

计算机视觉 目标检测&#xff0c;语义分割&#xff0c;目标分类 自然语言处理NLP 数据结构 数据结构 访问元素 线性回归 可以看成是一个单层的神经网络&#xff0c;有显式的解 优化算法 梯度下降&#xff0c;超参数&#xff1a;学习率、批量大小 分类回归 单层感知机…

3.0 响应式系统的设计与实现

1、Proxy代理对象 Proxy用于对一个普通对象代理&#xff0c;实现对象的拦截和自定义&#xff0c;如拦截其赋值、枚举、函数调用等。里面包含了很多组捕获器&#xff08;trap&#xff09;&#xff0c;在代理对象执行相应的操作时捕获&#xff0c;然后在内部实现自定义。 const…

【Windows】高效的本地文件搜索工具《Everything》

&#x1f433;好用高效的本地文件搜索工具《Everything》 &#x1f9ca;一、什么是Everything&#x1f9ca;二、为什么选择Everything&#x1f9ca;三、下载Everything&#x1f9ca;四、Everything为什么高效 &#x1f9ca;一、什么是Everything Everything是一个运行于Window…

java内部类详解(IT枫斗者)

java-内部类详解 内部类概念 定义:把类定义在其他类的内部&#xff0c;这个类被称为内部类&#xff08;嵌套类&#xff09;。分类:根据其所在位置及形式的不同,分为成员内部类、静态内部类、局部内部类、匿名内部类。 成员内部类 联想到成员变量和成员方法&#xff0c;内部类…

界面交互篇:答题页的答题逻辑交互开发

微信小程序云开发实战-答题积分赛小程序 界面交互篇:答题页的答题逻辑交互开发 前面的那一篇文章,我们已经完成了使用云开发的聚合能力实现从题库中随机抽取题目功能。 在页面加载时,实现从题库中随机抽取题目功能。那么,拿到数据后要干什么?如何做? 动态数据绑定 实…

android基础知识复习

架构&#xff1a; 应用框架层&#xff08;Java API Framework&#xff09;所提供的主要组件&#xff1a; 名称功能描述Activity Manager&#xff08;活动管理器&#xff09;管理各个应用程序生命周期&#xff0c;以及常用的导航回退功能Location Manager&#xff08;位置管理器…

【tkinter 专栏】专栏前言

文章目录 前言本章内容导图1. tkinter 工具及特点2. 为什么使用 Python 进行 GUI 设计?2.1 Python 可以做什么2.2 使用 tkinter 可以干什么?3. 如何学习使用 tkinter 进行 GUI 设计?4. 开发环境搭建4.1 Python 的版本4.2 安装 Python4.2.1 下载 Python 安装包4.2.2 安装 Pyt…

【前端面试题】深拷贝的终极实现

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 引子 通过本文可以学习到深拷贝的三种写法的实现思路与性能差异 首先&#xff0c;我们要理…