[Python基础04]基本数据类型

1、计算机程序概述

计算机程序,是按照一定的顺序思路来解决问题的一种方式。

计算机程序,我们通常会解释说是由指令和代码组成,同样也可以说是由数据结构和算法组成;其实这两种说法的核心意义都是一样的,都是通过一系列有序的操作来完成数据的处理过程。

不论任何用来开发程序的编程语言,都有这样的解决问题的各种程序基础操作,基础操作需要理解的是:程序是用于解决实际问题的,解决问题的核心在于处理数据,处理数据的话,就得具备以下四个方面才能正常完成简单数据处理:

  • 用于表示各种不同类型数据的:数据类型
  • 用于临时存储数据的容器:变量
  • 用于进行不同的数据之间的数学运算的:运算符
  • 用于根据不同的条件进行不同的功能处理的:程序结构

所有这些在python中,以数据结构的方式进行了提供和使用的方式

2、数据结构

什么是数据结构?

通过一定的方式组织在一起的数据元素的集合,这些数据可以是数字或者字符、也可以是任意一种数据结构类型
这里需要注意的是:python中最基本的数据类型是序列
python中包含6种内建的数据序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象

3、程序设计开发基本要素

1.数据类型

  • 基本数据类型
  • 组合数据类型

2.变量

  • 对象引用

3.操作符

  • 赋值运算符
  • 逻辑操作符
  • 算数操作符

4.输入/输出
5.程序结构

  • 顺序结构、选择结构、循环结构

6.函数的创建/使用

3.1、基本数据类型

python中的基本数据类型有

3.1.1、整型Integer(不可变类型)

整数类型,一般情况下都是使用整数数字来表示整数类型的数据

num = 12; # 定义一个变量,变量中存放了一个数据12,整数类型
count = 50; #定义了一个变量,存放了一个数据50,整数类型

这里需要注意,一旦num定义好,并赋值12之后,这个12是不允许修改的。但是可以给num重新赋值。

 num = 12;
 id(num);    # 通过id内置方法来查看num存放的内存空间的位置
结果:
 num = 23;
 id(num);  #通过id内置方法来查看num存放的内存空间的位置

结果:

不可变数据实际操作过程.png

3.1.2、浮点类型(不可变类型)

浮点类型,可以通过添加小数点的方式来表示小数、也可以保存复数等等

可以根据实际需要,来定义浮点数进行数据的处理过程

pi = 3.1415926;
r = 8;
print (pi * r * r);   #用于计算半径为8的圆的面积

浮点数实际运算.png

3.1.3、布尔类型Boolean(不可变类型)

布尔类型,一种特殊的数据类型,在python中可以取值为True或者False,用于表示只有两种结果的情况

通常情况下,是我们开发人员根据实际要解决的问题,进行类型的定义,某种情况下只需要两种结果,如使用res来表示今天是否下雨的结果,今天是否下雨:True表示下雨;False表示不下雨。

res = True; # 表示结果res为真的情况
res = Falst; # 表示结果为假的情况

布尔类型的赋值

3.1.4、字符串(不可变类型)

python中,字符串是包含在一对单引号或者双引号中的一串字符

name = "大牧莫邪";
print (name);
company = "奇酷信息科技有限公司"
print (company);

如果字符串中要出现单引号或者双引号,需要嵌套使用

字符串的简单使用

3.2、组合数据类型

python中为了方便一部分相似数据的处理,提供了各种组合类型,常见的如列表、元组
python中的列表是可变序列,元组是不可变序列

3.2.1、列表

列表的语法结构:通过一堆方括号包含起来的数据序列,可以存放重复数据

name = ['张小凡', '碧瑶', '陆雪琪', '林惊羽']

因为列表本身也是对象,所以可以进行嵌套处理

user = [['张小凡', '鬼王宗'], ['碧瑶', '鬼王宗'], ['陆雪琪', '青云门']]

列表数据的查看,可以通过索引/下标进行查看

> user
 [['张小凡', '鬼王宗'], ['碧瑶', '鬼王宗'], ['陆雪琪', '青云门']]
> user[1]
['碧瑶', '鬼王宗']
> user[1][0]
'碧瑶'

列表中追加数据:append()

user.append(['金瓶儿', '合欢派']);
结果: [['张小凡', '鬼王宗'], ['碧瑶', '鬼王宗'], ['陆雪琪', '青云门'], ['金瓶儿', '合欢派']]

列表中指定位置追加数据:insert()

user.insert(2, ['秦无炎', '万毒门']);
结果:[['张小凡', '鬼王宗'], ['碧瑶', '鬼王宗'], ['秦无炎', '万毒门'], ['陆雪琪', '青云门'], ['金瓶儿', '合欢派']]

删除列表末尾的元素:pop()

user.pop();
结果:[['张小凡', '鬼王宗'], ['碧瑶', '鬼王宗'], ['秦无炎', '万毒门'], ['陆雪琪', '青云门']]

删除列表中指定位置的元素:pop(index)

user.pop(2);
结果:[['张小凡', '鬼王宗'], ['碧瑶', '鬼王宗'], ['陆雪琪', '青云门']]

将列表中指定位置的数据进行替换,直接给对应的索引赋值

user[2] = ['鬼先生', '鬼王宗']
结果:[['张小凡', '鬼王宗'], ['碧瑶', '鬼王宗'], ['鬼先生', '鬼王宗']]

至此,常见的列表操作就基本介绍结束了,后续更加细致的操作手段和方式,在项目中需要进行深入的时候和熟练了。

3.2.2、元组

元组在python中,其实是列表的一种特殊的形式,一旦声明创建就不允许改变。
语法结构:使用一对圆括号包含起来的一组数据,可以存放重复数据

season = ('春' , '夏' , '秋' , '冬')

定义并给元组进行赋值之后,就可以像列表一样进行数据的查看了

season
结果: ('春' , '夏' , '秋' , '冬')
season[1]
结果:'夏'

由于元组的数据一旦定义就不可更改,在一定程度上提高了代码的安全性,所以在程序设计开发的过程中,对于一部分不需要更改的数据如果可以定义成元组的,就不要定义成列表了。

注意:元组中如果存放的是其他的内容可变的元素的话,一定要注意此时的元组中对象的数据是可变的。
如:

# 定义了一个元组,此时元组中出了存放字符串,还存放了一个列表
tuple = ('张小凡', '林惊羽', ['陆雪琪', '青云门'])
tuple[2][0] = '碧瑶'
tuple[2][1] = '鬼王宗'
tuple
结果:('张小凡', '林惊羽', ['碧瑶', '鬼王宗'])

执行过程如下图所示
元组中包含对象,修改对象数据的执行过程

3.2.3、集合

python中,还提供了一种特殊的数据类型,集合Set,和列表类似,但是不能存储相同的数据;注意:集合set中存放数据是不能重复的,并且是没有存放顺序的,也就是没有下标的。

语法:使用一对大括号/花括号包含起来的一组数据

h = {'集合元素'}
hreo = set(['将列表转换成集合'])
heros = {'寒冰艾希', '皎月戴安娜', '钢铁波比', '雪人努努', '迷失纳尔'};
heros
结果:{'寒冰艾希', '皎月戴安娜', '钢铁波比', '雪人努努', '迷失纳尔'};
heros[3] # 错误,集合中没有下标,是无序存放数据的

集合中增加数据:add()

heros.add('青钢影卡密尔');
heros
结果:{'寒冰艾希', '皎月戴安娜', '钢铁波比', '雪人努努', '迷失纳尔', '青钢影卡密尔'};

集合中删除数据:remove()

heros.remove("皎月戴安娜");
heros
结果:{'寒冰艾希', '钢铁波比', '雪人努努', '迷失纳尔', '青钢影卡密尔'};
3.2.4、 字典

为了方便数据在组合数据类型中的管理,python 还提供了一种特殊存储数据的组合数据类型:字典。通过key-value键值对的形式来存储数据,可以很方便的通过key来对value进行增删改查的操作

语法结构:

# 定义一个字典,每一个数据都是成对出现的 key:value
heros = {"皎月女神":"戴安娜", "虚空遁地者":"雷克赛", "沙漠皇帝":"阿兹尔", "无双剑姬":"菲奥娜"}
# 通过字典的名称使用字典
heros
结果:{"皎月女神":"戴安娜", "虚空遁地者":"雷克赛", "沙漠皇帝":"阿兹尔", "无双剑姬":"菲奥娜"}
# 通过字典中数据的key来获取对应的value数据
heros['皎月女神']
结果:'戴安娜'

查询字典中的数据,使用方括号或者get()函数

# 使用方括号的形式查询数据
heros['皎月女神']
结果:'戴安娜'
# 使用get()函数查询数据
heros.get('皎月女神')
结果:'戴安娜'

修改字典中指定的数据,通过给指定的key直接赋值就可以修改

heros['沙漠皇帝'] = '兹尔大帝'
heros.get('沙漠皇帝')
结果:'兹尔大帝'

删除字典中的数据,通过删除指定的key对应的数据即可删除

heros.pop('沙漠皇帝')
heros
结果:{'皎月女神': '戴安娜', '虚空遁地者': '雷克赛', '无双剑姬': '菲奥娜'}

以上四种数据类型的比较:

  • 元组Tuple是存放固定的数据
  • 集合Set中的数据插入和遍历的时间,随数据增多而变慢
  • 列表List中的数据插入和查询的时间,随数据的增多而变慢
  • 字典Dict中的数据插入和查询的速度非常快,不会因为数据太多而变慢

元组、集合和列表占用内存较少,字典占用内存较多,字典是一种通过占用空间来换取操作速度的一种数据类型

3.3、变量

变量就是用来临时存放数据的一个容器

3.3.1、 变量的使用

python中的变量,不需要声明即可使用
python中的变量命名:驼峰命名法,见名知意,只能是字母、数字和下划线组成,变量第一个字符只能是字母或者下划线

stockCount = 12; # 意义:库存数量 12
price = 499.00; # 意义:单价为499.00
_pi = 3.1415; # 意义:定义了圆周率pi为3.1415
$name = 'jerry' # 错误:变量中不能包含$符号
3.3.2、变量的回收

变量一旦定义,在程序中也是使用内存空间来存储数据的,所以当变量一旦不在需要使用,需要删除变量释放它占用的内存空间,python中通过del关键字来删除变量

stockCount = 12; # 使用库存变量
del stockCount; # 删除变量stockCoutn
print (stockCount) # 报错,stockCount变量未定义

这里一定要注意,在Python中,认为一切都是对象,所以变量进行赋值时,其实就是python在内存中创建了这个对象,然后将对象在内存中的地址存储在变量中了。

count = 100;    # 内存中创建了一个对象,对象的数据是100
id(count);
结果:1867079904   # 表示count中存放的内存地址
count = 200;   # 内存中创建了一个对象200
id(count)
结果:1867560352 # 表示此时count中存放的内存地址

注意1:python将所有的数据都存储为内存对象,变量其实就是指向对象的一个引用,只要需要,就可以让变量随时引用一个不同的对象

注意2:python内置了函数type(),用于检测给定数据的数据类型

注意3:使用赋值符=等号,用来将一个变量和内存中的对象绑定起来,如果对象在内存中存在就直接绑定,否则赋值运算符后面的对象会被即时创建之后进行绑定。

那就存在问题了,创建的100和200这两个数据,内存中进行了什么样的处理的呢?

python将这样没有引用变量指向的对象,回收到了对象缓冲池(PS:对象缓冲池也是内存中的一个区域),方便下次使用的时候直接获取,所以在使用python的时候,一定要注意内存泄漏的问题。关于python内存管理这一部分,后续会单独进行讲解

3.3.3、 变量的命名规则

只能包含字母、数字、下划线,且不能以数字开头
变量名称区分大小写,name和Name就是两个不同的变量
禁止使用python2和python3的保留字

3.3.4、 特殊变量

以一个下划线开头的变量名称,不会被import语句导入
前后各有下划线的变量名,是系统定义的变量名,有特殊含义
交互模式下,单个下划线中保存了最后的输出表达式的结果

3.4、操作符

操作符,就是用于进行数据运算的符号
常见的操作符一般有赋值运算符、算数运算符、逻辑运算符、关系运算符等等

3.4.1、 赋值运算符
运算符描述使用方式
=直接赋值a = 2 给a赋值数据2
+=加法赋值运算a += 2 a原来的数据加2再赋值给a
-=减法赋值运算a-=2 a原来的数据减去2再赋值给a
*=乘法赋值运算a*=2 a原来的数据乘以2再赋值给a
/=除法赋值运算a/=2 a原来的数据除以2再赋值给a
%=取余赋值运算a%=2 a原来的数据除以2,将余数赋值给a
**=次方赋值运算a**=2 将a原来的数据取2次方运算再赋值给a
//=地板除法运算a//=3 将a原来的数据地板除以3将结果赋值给a
3.4.2、 算数运算符
运算符描述使用方式
+加法运算1 + 2 结果 3
-减法运算1 - 1 结果 0
*乘法运算12 * 12 结果 144
/除法运算10 / 3 结果 3.333333
%取余运算10 / 3 结果 1
**次方运算10 ** 2 结果 100
//地板除法运算10 // 3 结果 3

注意
在Python2中,除法运算和地板除法运算是一个结果
在python3中,除法运算和地板除法运算结果不一样

3.4.3、 关系运算符

关系运算符,通过比较运算符两边的数据,返回一个布尔类型的结果

运算符描述使用方式
>大于运算1> 2 结果 False
<小于运算1 < 2 结果 True
>=大于等于运算12 >= 12 结果True
<=小于等于运算12 <= 11 结果 False
<>不等于运算10 <> 3 结果 True
!=不等于运算等同于<> ,如10 != 10,结果False
==等于运算10 == 3 结果 False
3.4.4、 逻辑运算符
运算符描述使用方式
and并且运算True and False 结果 False
or或者运算True or False 结果 True
not非运算not False 结果True

注意
这里的逻辑运算符,python中只有and|or|not,在其他语言中,也有类似&&、||、!的符号来表示and、or、not的三种关系的
and/&&:并且运算,当运算符两边的数据都为True才返回True,否则返回False
or/||:或者运算,当运算符两边的数据都是False才返回False,否则返回True
not/!:非运算,对结果进行取反,如果为True结果为False,如果为False则结果为True

3.4.5、成员运算符

成员运算符,主要用于判断某个成员是否出现在某个对象中

运算符描述使用方式
in如果在指定的变量中找到则为True,否则为FalsejiaoYue in heros
not in如果在指定的变量中没有找到返回TruejiaoYue not in heros

实际操作如下

heros = ["皎月女神", "暴走萝莉", "机械先驱", "九尾妖狐"]
feiCi = "潮汐海灵";
jiaoYue = "皎月女神";
feiCi in heros;
结果:False
jiaoYue in heros;
结果:True

成员运算符的使用

3.4.6、 标识运算符

标识运算符,主要用于两个不同的变量数据类型的检测

运算符描述使用方式
is如果运算符两边的变量指向相同的对象则为Truea is b
is not如果运算符两边的变量指向不同的对象则为Truea is not b
a = 12;
b = 12;
a is b
结果:True
a is not b 
结果:False




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

周小董

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值