python数据类型介绍与使用
目录
一.数字类型(int,flaot)
二.字符串类型(str)
三.列表类型(list)
四.元组类型(tuple)
五.字典类型(dict)
六.集合类型(set)
一..数字类型:
引用:我们学习变量是为了让计算机能够像人一样记忆某种事物的状态,而变量的值就是用来存储事物的状态,
很明显事物的状态是分很多种类的(比如人的姓名,身高,体重,工资等)所以变量的值也应该有不同的类型。
age = 21 # 用整型去记录年龄
name = 'nick_xm' # 用字符串记录人的姓名
salary = 1888.888 # 用浮点型记录薪资
作用:用来定义人的年龄,出生年月份等的一种整数相关的状态。
定义:变量后面跟整数或则小数。
age = 21
brithday = 1998
使用:数字类型可以 数学运算 也可以比大小。
1.1 数学运算:
a = 1
b = 2
c = 3
print(a + b) # 3
1.2 比较大小
a = 1
b = 2
c = 3
print(a < b) # True
1.3 folat浮点型
作用:用来记录人的身高,体重,薪资等小数相关的状态
定义:变量后面跟小数
height = 1.68
weight = 109.5
salary = 3999.99
二.字符串类型:
2.1 作用
用来记录人的名字,性别,家庭住址等描述性值的状态。
2.2 定义
name = 'nick_xm'
sex = 'man'
addres = 'Chongqing'
2.3 使用
# 数字类型可以进行算术运算,字符串也可以只不过是只能进行“相加”,‘相乘’运算。
name = 'nick_xm'
age = 21
number = 3
print(name + age) # 相加只不过是简单的拼接再一起 nick_xm21
print(name*number) # 相乘也只不过是将字符串相加了3次 nick_xmnick_xmnick_xm
三.列表类型:
3.1 作用
用来记录多个同种属性值的一种容器类型,可变类型,定义的列表里面元素是可以改变的
3.2 定义
student = ['Yuan-Yuan su', 'nick_xm', 'alex', 'egon']
3.3 使用
# 列表是按照索引来对应值的,索引代表的是数据的位置,从零开始记
student_name = ['Yuan-Yuan su', 'nick_xm', 'egon']
print(studen_name[0]) # Yuan-Yuan su
print(studen_name[-1]) # egon 列表也可以倒着取值从-1开始记数
# 列表也可以嵌套列表
student_name = [['Yuan-Yuan su', 'woman', '1.75'], 'nick_xm']
print(student_name[0][2]) # 取出第一个学生的身高
四.元组类型:
4.1 作用
用来记录多个同一种属性值的容器类型,属于不可变类型,一但定义不可改变,比如人的年龄到了一定时间就会永恒不变
4.2 定义
alex_life_span = (100,)
# 除了不可变其他跟列表一样
五.字典类型:
5.1 作用
用来记录多个不同属性值的状态,字典类型是用key:value形式来存储数据,其中key可以对value有描述性的功能
5.2 定义
person_info = {'name': 'nick_xm'}
5.3 使用
# 字典类型使用key来对应值的关系的,通常情况是对应的字符串
person_info = {'name': 'nick_xm', 'age': 21, hobbies: ['game', 'desige']}
print[person_info][name] # nicck_xm
六.集合类型:
6.1 作用
跟其他类型一样也是可以存多个值的容器类型,主要用于去重和关系运算
6.2 定义
'''在{}号内用逗号分隔开多个元素, 集合具备一下三个特点
1 每个元素必须是不可变类型
2 没有重复元素
3 集合内的元素是无序的
'''
s = {1,2,3,4} # 等同于 s = set(1,2,3,4)
# 注意列表是索引取值,字典是key取值,但是集合没有索引也没有key,自然就不存在取值
# 对于集合没有单独取一个值的功能,集合主要应用在去重和关系运算
# 集合跟字典都是用的一个{}号,那么现在我要定义一个空集合,怎么跟字典区分开了
d = {} # 这样定义相当于定义了一个空字典
l = set() # 这才是定义了一个空集合
6.3 使用
- 关系运算
我们定义两个集合egon_student和alex_student来进行演示
egon_student = {'nick_xm','tank','Yuan-Yuan su', '张三', '李四'}
alex_student = {'张三', '李四', '王二','jin'}
‘计算egon的学生和alex的学生一共有多少’
print(egon_student|alex_student) # | 合集 并集 计算alex和egon的学生 重复的学生只留一个
'算egon的学生和alex的学生都有几个'
print(egon_student&alex_student) # & 交集 计算alex和egon重复的学生有几个,两个老师的学生重复的
print(egon_student-alex_student) # - 差集 计算alex独有的好友
print(alex_student-egon_student) # - 差集 计算egon独有的好友
print(alex_student > egon_student) # >= 一个集合是否包含另一个集合
print(alex_student < egon_syudent) # <= 一个集合是不是另一个集合的子集
"对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友)"
print(alex_student ^ egon_student)
集合去重
集合去重有很多局限性
元素必须是不可变类型
去重后会打乱原有的顺序
6.4 集合去重实例
l = [1, 2, 3, 4, 5, 6, 1, 23, 23, 456, 23, 11, 1, 5, 2, 3]
new_l = set(l)
l = list(new_l)
print(l) # [1, 2, 3, 4, 5, 6, 456, 11, 23]
# 要怎么才能保证去重不打乱顺序了 看实例
# 针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
{'name':'lili','age':18,'sex':'male'},
{'name':'jack','age':73,'sex':'male'},
{'name':'tom','age':20,'sex':'female'},
{'name':'lili','age':18,'sex':'male'},
{'name':'lili','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)
# 结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重
[
{'age': 18, 'sex': 'male', 'name': 'lili'},
{'age': 73, 'sex': 'male', 'name': 'jack'},
{'age': 20, 'sex': 'female', 'name': 'tom'}]
七.补充下可变类型与不可变类型
7.1 可变类型
- 值发生改变时,内存地址没有变,id 没有改变,证明在改变原值
7.2 不可变类型
- 值发生改变时,内存地址也变了,id 改变了,证明原值没有被改变,而是产生了新的值