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 改变了,证明原值没有被改变,而是产生了新的值
posted @ 2020-03-12 15:32  nick_xm  阅读(340)  评论(0编辑  收藏  举报