Python3之基本数据类型总结

2023-11-11

日期:2019年12月15日
作者:Commas
注释:学习就是为了忘记,总结一下python3的基本数据类型相关的知识。
如果您想了解更多有关Python的知识,那么请点《我的Python目录》



一、变量在内存中的存储

变量数据是分开存储的,数据保存在内存中的一个位置,而变量保存着数据所在内存中的地址。如下图赋值语句:a = 1所示,我们看到的是虚线左边的变量名a,我们操作的数据是存在虚线右边id为140717091251024的内存中的值。
在这里插入图片描述

  • 变量:一个标识符,保存着指向数据所在内存中的地址,可以理解为一个指针,也可以理解为一个数据的标签(用这个标签,我们就可以获得标签对应的数据值),用内置函数id()可以查看内存地址。
  • 可变类型:数据发生改变,但是内存地址没有发生了改变的数据类型。
  • 不可变类型:数据发生改变,内存地址同样发生了改变的数据类型。
分类 数据类型
可变类型 列表、字典、集合(非冻结结合)
不可变类型 数字类型(int,bool,float等)、字符串、元组、冻结集合

二、内置函数(1)

内置函数 说明
len 获取给定参数的长度或者项目个数
min 获取给定参数的最小值
max 获取给定参数的最大值
sum 获取给定参数的合计值(求和)
del 删除变量,该变量将不可被访问

之前在介绍每一个基本数据类型的时候,都没有怎么去讲这些知识,不是因为这些知识不重要,而是这些函数是Python的内置函数,并非每个基本数据类型的方法,写在一起怕有所混淆。
那么这4个函数,分别支持哪些基本数据类型呢?奈何我这个人比较懒,不喜欢写重复代码,于是乎,就写了一个通用的函数用来测试支持的情况咯,代码如下:

def print_exec_result(test_built_in_function, test_param):
    """
    测试test_built_in_function内置函数是否支持test_param数据类型的数据
    :param test_built_in_function: 字符串,内置函数名,如'max'
    :param test_param:需要测试的数据类型的数据
    """
    command = "print({}({}))".format(test_built_in_function, test_param)
    # print(command)
    try:
        print("\t【{}】的结果:".format(test_built_in_function), end="")
        exec(command)
    except Exception as e:
        print("{}()的参数不支持{}的数据类型,详情:{}".format(test_built_in_function, type(test_param), e))

所谓工欲善其事,必先利其器。现在器已经准备好,那么我们就来做事,开始测试这4个函数对列表、元组、字典、字符串、集合和数字(Number)等6个基本数据类型的支持情况吧:

one_list = [1, 2, 3]
one_tuple = (1, 2, 3)
one_dict = {"c": 1, "b": 2, "a": 3}
one_string = "123abc"
one_set = {1, 2, 3}
one_int = 123

data_list = [one_list, one_tuple, one_dict, one_string, one_set, one_int]
cmd_list = ['len', 'min', 'max', 'sum']

for i, data in enumerate(data_list):
    print("({})、数据类型为{}的数据{}测试结果如下:".format(i, type(data), data))
    for cmd in cmd_list:
        print_exec_result(cmd, data)

控制台输出如下:
(0)、数据类型为<class ‘list’>的数据[1, 2, 3]测试结果如下:
【len】的结果:3
【min】的结果:1
【max】的结果:3
【sum】的结果:6
(1)、数据类型为<class ‘tuple’>的数据(1, 2, 3)测试结果如下:
【len】的结果:3
【min】的结果:1
【max】的结果:3
【sum】的结果:6
(2)、数据类型为<class ‘dict’>的数据{‘c’: 1, ‘b’: 2, ‘a’: 3}测试结果如下:
【len】的结果:3
【min】的结果:a
【max】的结果:c
【sum】的结果:sum()的参数不支持<class ‘dict’>的数据类型,详情:unsupported operand type(s) for +: ‘int’ and ‘str’
(3)、数据类型为<class ‘str’>的数据123abc测试结果如下:
【len】的结果:6
【min】的结果:1
【max】的结果:c
【sum】的结果:sum()的参数不支持<class ‘str’>的数据类型,详情:unsupported operand type(s) for +: ‘int’ and ‘str’
(4)、数据类型为<class ‘set’>的数据{1, 2, 3}测试结果如下:
【len】的结果:3
【min】的结果:1
【max】的结果:3
【sum】的结果:6
(5)、数据类型为<class ‘int’>的数据123测试结果如下:
【len】的结果:len()的参数不支持<class ‘int’>的数据类型,详情:object of type ‘int’ has no len()
【min】的结果:min()的参数不支持<class ‘int’>的数据类型,详情:‘int’ object is not iterable
【max】的结果:max()的参数不支持<class ‘int’>的数据类型,详情:‘int’ object is not iterable
【sum】的结果:sum()的参数不支持<class ‘int’>的数据类型,详情:‘int’ object is not iterable

我们可以下结论啦:

内置函数built-in 列表List 元组Tuple 字典Dictionary 字符串String 集合Set 数字Number
len 列表元素个数 元组元素个数 字典键值对个数 字符串长度 集合元素个数 不支持
min 列表元素最小值 元组元素最小值 字典键的最小值 字符串元素最小值 集合元素最小值 不支持
max 列表元素最大值 元组元素最大值 字典键的最大值 字符串元素最大值 集合元素最大值 不支持
sum 列表元素合计值 元组元素合计值 不支持 不支持 集合元素合计值 不支持

三、内置函数(2)

内置函数 说明
list 强制转换并获得一个新的列表对象
tuple 强制转换并获得一个新的元组对象
dict 强制转换并获得一个新的字典对象
set 强制转换并获得一个新的集合对象
frozenset 强制转换并获得一个新的冻结的集合对象,冻结后的集合不能再添加或删除任何元素
str 强制转换并获得一个新的字符串对象
int 将一个字符串或数字转换为整型
float 将整数和字符串转换成浮点数
bool 将给定参数转换为布尔类型,如果没有参数,返回 False

接下来,我们讨论一下字典,其余参考上表即可。

  1. 字面量定义字典
score_dict = {
    "Chinese": 99,
    "Math": 100,
    "English": 98
}
print(score_dict)
# 控制台输出:
# {'Chinese': 99, 'Math': 100, 'English': 98}
  1. 键值对定义字典
score_dict = {}
score_dict["Chinese"] = 99
score_dict["Math"] = 100
score_dict["English"] = 98
print(score_dict)
# 控制台输出:
# {'Chinese': 99, 'Math': 100, 'English': 98}
  1. 内置函数dict()定义字典(一)---->“关键字key=value”
score_dict = dict(
    Chinese=99,
    Math=100,
    English=98
)
print(score_dict)
# 控制台输出:
# {'Chinese': 99, 'Math': 100, 'English': 98}
  1. 内置函数dict()定义字典(二)---->“列表+二元元组”
score_dict = dict(
    [("Chinese", 99), ("Math", 100), ("English", 98)]
)
print(score_dict)
# 控制台输出:
# {'Chinese': 99, 'Math': 100, 'English': 98}
  1. 内置函数dict()定义字典(三)---->“zip()内置函数”
score_dict = dict(
    zip(
        ["Chinese", "Math", "English"],
        [99, 100, 98]
    )
)
print(score_dict)
# 控制台输出:
# {'Chinese': 99, 'Math': 100, 'English': 98}

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/103525714

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3之基本数据类型总结 的相关文章

  • 如何在Python的SciPy中更改稀疏矩阵中的元素?

    我构建了一个小代码 我想用它来解决涉及大型稀疏矩阵的特征值问题 它工作正常 我现在要做的就是将稀疏矩阵中的一些元素设置为零 即最顶行中的元素 对应于实现边界条件 我可以调整下面的列向量 C0 C1 和 C2 来实现这一点 不过我想知道是否有
  • Google App Engine queue.yaml 无法在开发服务器中工作

    我无法让 dev appserver py 识别我使用queue yaml 创建的自定义队列 他们没有出现在http localhost 8000 taskqueue http localhost 8000 taskqueue 当我尝试向其
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 在 Django OAuth Toolkit 中安全创建新应用程序

    如何将 IsAdminUser 权限添加到 Django OAuth Toolkit 中的 o applications 视图 REST FRAMEWORK DEFAULT PERMISSION CLASSES rest framework
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • SocketIO + Flask 检测断开连接

    我在这里有一个不同的问题 但意识到它可以简化为 如何检测客户端何时从页面断开连接 关闭其页面或单击链接 换句话说 套接字连接关闭 我想制作一个带有更新用户列表的聊天应用程序 并且我在 Python 上使用 Flask 当用户连接时 浏览器发
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • 如何根据第一列创建新列,同时考虑Python Pandas中字母和列表的大小? [复制]

    这个问题在这里已经有答案了 我在 Python Pandas 中有 DataFrame 如下所示 col1 John Simon prd agc Ann White BeN and Ann bad list Ben Wayne 我需要这样做
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS

随机推荐