基本数据类型

数据类型

在记录变量或者常量时,数据值需要合适的类型进行记录,

比如等级可以用数字记录,

比如名字需要用文字记录,

在python中,有几个常用的数据类型需要掌握,能帮助我们更好的记录数据

而数据类型可以用一条指令type(数据或者变量)来判断

数字类型int、float

int是数字整型,float是数字浮点型,对应是我们平常用的整数和小数

print(type(10))
# <class 'int'>
print(type(10.1))
# <class 'float'>

int和float在底层的存储方式是有区别的,但是在python中int和float的使用没有差别,作为普通的数字使用即可。

字符串str

字符串可以记录我们文字内容,包括字母、汉字等

name = 'leethon'
print(type(name))
# <class 'str'>

列表list

列表是用来记录多个不同的值的,它可以将这几个值存在一个变量里

# 对比以下两种存多个值的方式
name_list1 = "张三 李四 王二麻"  # 字符串
name_list2 = ['张三', '李四', '王二麻']  # 列表

在存储上,两个姓名表好像差不多,那么为什么还要专门搞一个列表类型的数据呢?

这时就要抛出一个重要的思想:

对于数据,存,要千方百计的存,取,要轻易快速的取

所有数据的存储都是为了日后能快速的定位到我们想要的数据。

敲黑板,放图

那么列表有什么取数据的优势呢?

print(name_list2[0])
# 张三
print(name_list2[1])
# 李四
print(name_list2[2])
# 王二麻
print(name_list2)
# ['张三', '李四', '王二麻']
"""
变量名对应列表,变量名[下标]对应列表中的某个元素
我们可以用变量名取到整个列表,
也可以用 变量名[下标]取到任何一个元素
"""

最后整理一下列表的细节和特点:

  • 列表用[]括起来,数据之间用逗号隔开

    list1 = [数据1,数据2,数据3,……]  # list1变量存入列表数据类型
    
  • 列表可以在一块连续空间有序存放几个不同的数据

  • 列表取值可以按下标取,第一个元素的下标是从0开始的

  • 列表的元素可以是另外一个列表,列表之间可嵌套

    [1, 2, 3, [4, 5],[6,[7, 8]]]  # 列表的嵌套
    

字典dict

列表可以让我们根据下标取到某一个元素的值,但是当一个列表的内容十分繁杂,如:

info = ['leethon', 18, 1.8, 'read']
# 以上这个列表的内容,如果不加以解释,很难区分这个字典每个元素的含义,即使能分辨含义,其取值方式info[0]也无法和元素含义相关联

所以就有一个字典的数据类型用于解决这一问题。

字典定义:

形式:大括号框柱,以k:v形式为键值对,每个键值对间用逗号隔开
{key: value, key2: value2, ……}
# 例子
info_dict = {'name': 'leethon',
            'age': 18,
            'height': 1.8,
            'hate': 'read'
            }

这样我们可以清晰的认识到18是年龄的意思,1.8是身高,阅读是这个人厌恶的事情。

但是,这么存好像更麻烦了,每个数据都多了一个描述信息,这时还是那句话:

存,要千方百计的存,取,要轻易快速的取

那怎么取呢?

name = info_dict['name']
print(name)
# leethon
# 只要用字典的变量名后面跟上[关键词]就可以取出相应的内容

布尔值bool

布尔值是表示事物真假两个状态的数据类型,它更偏向于最终做出决定的结果。

存储形式:True表示真、对、可行;False表示假、错、不可行

除了True/False表示布尔状态,还有其他数据也带有布尔属性:

# 带False属性:
0,none, [],  {} ,set()
# 带True属性的:
除了上面的全部都带True属性。

存储布尔值的变量,其命名一般以is开头,可视为python的规范和习惯。

is_delete = 0  # 代表没有被删除

元组tuple

元组和列表很像,都可以存储多个元素。

t1 = (1, 2, 3,)
t2 = (1,)
t3 = ()
t4 = (1, 'lee', [11, 22])
# 以上都是元组,用小括号括起来,逗号隔开其他元素

元组与列表的不同点,在于其内部的元素是不可变的

print(t1[0])
# 1 ,可以像元组一样取值
t1[0] = 0  # 报错'tuple' object does not support item assignment
print(t1[0])  # 上一句指元组对象不支持元素的更改
进阶:底层机制解析

元组与其内部元素的绑定关系是不可变的,而不是其内部元素完全不变。

怎么理解这句话呢?

看这个例子:

t4 = (1, 'lee', [11, 22])
t4[2][1] = 100
print(t4[2])  # [11, 100]
# 可以看见,元组的序列2元素发生了变化,为什么这次更改就没有触发报错呢?

注意,这里绑定关系发生更改的是t4[2]而不是t4,即是列表的绑定关系变化而不是元组。

集合set

集合并不算常用,其应用面仅仅在去重和关系运算。

语法:

se1 = set()  # 空集合,因为{}代表空字典
se2 = {1, 2, 3, 'aa'}  # 不能有重复元素

大括号括起来,但是与字典不同,它内部的元素不是k:v键值对。

posted @ 2022-09-26 18:54  leethon  阅读(27)  评论(0编辑  收藏  举报