Python3之基本数据类型总结

日期: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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Commas.KM

码路共同进步,感恩一路有您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值