数据类型基础
目录
数据类型
- 什么是数据类型
在日常生活中数据的表现形式多种多样 在程序中也是如此 - 为何学习数据类型
针对不同的数据采用最佳的数据类型来表示出该数据的价值 - 本次学习数据类型仅仅是了解
只要看到每个数据类型能够叫出它们的名字以及代码如何编写即可 - 学前必会
如何查看数据值的数据类型type()
name = 'jack'
print(type(name))
1.整型int
大白话的意思其实就是整数
应用场景:年龄 班级人数 年份
age = 18
num = 56
year = 2022
int类型属于python中的数字类型,数字类型有int
float
complex
2.浮点型float
大白话的意思其实就是小数
height = 1.83
weight = 75.5
salary = 3.1
3.字符串str
在 Python 中处理文本数据是使用 str
对象,也称为 字符串。
字符串是 序列类型,支持序列类型的各种操作。
字符串支持引索和切片。
python字符串不能修改,是不可变对象。
# 定义字符串有四种方式
name = 'jason'
name1 = "jason"
name2 = '''jason'''
name3 = """jason"""
用引号将文本包裹起来python才能识别出来:
name = 'jason # 这样识别不出来
文本中包含引号的情况:
print("Isn't, they said.")
# 会输出:Isn't, they said.
使用\
转义引号:
print('"Isn\'t," they said.')
不希望\
作为转义符号使用的情况,添加r
:
print(r'C:\some\name')
4.列表list
和字符串一样是序列类型 ,序列类型支持引索和切片,序列类型是一种可迭代对象。
name_list = ['jason', 'tony', 'kevin', 'oscar', 'jerry']
列表中每个元素都会在内存中开辟一块空间,如上有5个元素,这五个元素开辟完后,内存中会再开辟一个列表对象,然后将name_list绑定到这个列表对象的内存地址。
引索取值:
2.索引取值
起始数字是从0开始
print(name_list[0]) # jason
什么是切片?
切片可以对大多数序列类型选取子集。
name_list[0:4]
这里面的0、4都是引索- 结束位置的引索不包含,你想切到引索3,就必须输入4。
省略引索的切片:
[:5] = [0:5]
name_list = ['jason', 'tony', 'kevin', 'oscar', 'jerry']
print(name_list[3:])
print(name_list[3:5])
print(name_list[0:4])
print(name_list[:4])
步进值step:
list[start:stop:step]
意思是每隔多少数取一个值
负数引索和步进值搭配:
引索越界会报错、切片越界会自动处理:
5.字典dict
字典属于映射类型,字典本质是含有两个元素的元祖的集合。字典是无序的。
字典文字描述:
大括号括起来 内部可以存放多个数据 数据的组织形式是K:V键值对
键值对与键值对之间逗号隔开
K是对V的描述性性质的信息(解释说明) 一般都是字符串类型
V是真正的数据值 可以是任意数据类型
info_dict = {
'username': 'jason',
'age': 18,
'hobby': 'read',
}
字典的键必须是不可变对象,如果字典的键是元祖,元祖里也不能含有可变对象!
可以用hash函数检查一个对象是否可以作为字典的键,不符合要求会报错。
6.基本数据类型之布尔值bool
1. bool类型的作用:用来判断事物的对错 是否可行 用于流程控制中
2. 只有两种状态
True 对的 真的 可行的
False 错的 假的 不可行的
3. python中所有数据都自带布尔值
布尔值为False的数据有:0 None '' [] {}
布尔值为True的数据有:除了上面的都是True
4. 存储布尔值的变量名一般推荐使用is开头
is_delete = False
is_alive = True
很多程序中提供的注销账户的功能 其实底层并没有删除数据 而是修改了数据的状态
id username password phone is_delete
1 jason 123 110 1
2 kevin 321 120 0
用户的数据以上表的形式存储在硬盘中,用户进行注销操作时,只是把 is_delete从 1 改成了 0 ,
并且其他信息也没有删除。
7.基本数据类型之元组tuple
1.也称为'不可变'的列表
元组内索引绑定的内存地址不能修改
2.小括号括起来 内部存放多个数据值 数据值与数据值之间逗号隔开 数据值可以是任何数据类型
3.代码实现
t1 = (11, 22, 'jason')
4.修改列表的元素
l1 = [11, 22, 33]
print(l1[0]) # 获取索引0对应的数据值
l1[0] = 666
print(l1) # [666, 22, 33] # 对于列表可以通过索引修改他的元素
5.无法修改元祖的元素
t1 = (11, 22, 33)
print(t1[0])
t1[0] = 999
print(t1)
会产生报错 # TypeError: 'tuple' object does not support item assignment
6.可以修改元祖内部列表的元素
t1 = (11, 22, [111, 222])
t1[2][1] = 666
print(t1)
"""
A.直接报错 ×
B.(11, 22, [111, 666]) √
C.不知道 超出了我的认知 ×
"""
7.元组内如果只有一个数据值
# 定义只有一个数据值的元祖,请不要省略逗号!
t1 = (1,)
t2 = (11.11,)
t3 = ('luna',)
print(type(t1), type(t2), type(t3)) # <class 'tuple'> <class 'tuple'> <class 'tuple'>
t1 = (1)
t2 = (11.11)
t3 = ('luna')
print(type(t1), type(t2), type(t3)) # <class 'int'> <class 'float'> <class 'str'>
"""
建议:以后在使用可以存放多个数据值的数据类型时 如果里面暂时只有一个数据值 那么也建议你加上逗号
"""
比如: list_a = [1,]
list_b = [11.1,]
list_c = ['luna',]
总结:
- 元祖和列表都是用索引来绑定、管理数据。
- 元祖所谓的不可变 指的是索引跟值的绑定关系不能改
元祖的更多知识:
1.元组由多个用逗号隔开的值组成
t = 12345, 54321, 'hello!' # 输入时,圆括号可有可无,不过经常是必须的 # 这也称为元祖打包
print(t) # (12345, 54321, 'hello!')
2.创建空元祖
empty = ()
print(len(empty),type(empty)) # 0 <class 'tuple'>
8.基本数据类型之集合set
集合(set)是一个无序的不重复元素序列。
1.集合只能用于去重和关系运算
后面再讲 暂且忽略
2.集合内数据只能是不可变类型
后面再讲 暂且忽略
3.大括号括起来 内部存放多个数据值 数据值与数据值之间逗号隔开 数据值不是k:v键值对
4.代码实现
s1 = {1, 2, 3, 4, 5, 6}
5.定义空集合与空字典
{} 默认是字典
set() 定义空集合