Python基础-02数据类型
2.Python数据类型
对于任何一种编程语言的学习,需要打好入门的基础知识,在Python中常见的基础知识有基本数据类型、条件语句、循环语句和函数,更深层次需要掌握面向对象的知识。今天我们先来了解学习一下基础知识,在Python常见的基本数据类型如下所示:
020101Python数据类型.png2.1 基本数据类型
2.1.1 布尔型
布尔型为(boolean)变量只能取两个值True和False,如果把布尔变量用于数字计算的话,则1代表True,0代表False。示例代码如下所示:
t=True
f=False
print(t+f)
print(1+t)
print(3+f)
运行结果如下所示:
1
2
3
除了直接给变量赋值True和False之外,还可以使用bool(variable)来创建变量,其中variable可以是
- 基本数据类型:整形、浮点型、布尔型等
- 容器数据类型:字符、元组、列表、集合和字典等
在Python中None、0、0.0、空值、空列表、空集合、空元组和空字典等都视为False
2.2.1 数字型
在Python中,常用的数字型都是内置数据类型,可以直接用来进行数学运算。如下所示:
020201数学操作符.png2.2.1.1 整型
整型也即我们常说的整数类型的数据,如1,-1等。示例代码如下所示:
a=100
b=-100
print(type(a),type(b))
运行结果如下所示:
<class 'int'> <class 'int'>
- 在Python,查看一个数据的类型可以使用函数type()
- 示例代码查看数据类型输出结果为 <class 'int'>,在Python一切皆为对象,因此整型也是一个类,而类就会相应的属性和方法
在Python中通过dir(variable)和help(variable)可以查看variable对应的属性和方法,如dir(int)
示例代码如下所示:
a=100
print(a.__add__(100))
print(a.__divmod__(3))
运行结果如下所示:
200
(33, 1) # 返回结果为商和余数
2.2.1.2 浮点型
浮点型也即我们常见的带小数位的数字,如1.2,1.0987等,示例代码如下所示:
a=1
b=1.
c=1.23
print(type(a),type(b),type(c))
运行结果如下所示:
<class 'int'> <class 'float'> <class 'float'>
在示例代码中,加一个小数点即可创建一个浮点型数据类型,如果需要对小数位数进行控制,可以使用round()函数,如果对精度要求比较高,可以使用包decimal,默认精度为28位,如下所示:
decimal.getcontext()
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
2.2容器类数据类型
在前面介绍的布尔型、数字类型的数据都可以看成是单独的数据,而这些数据都可以放在一个容器中进而得到一个容器类型的数据。如
- 字符型:可以看成是由很多个字节组成的容器。字节(char)这里借用其他编程语言,Python中并未有此种数据类型,在其他语言中单个字符的数据称之为char类型
- 元组 (tuple)、列表 (list)、字典 (dict) 和集合 (set) 可以看成是一个容器的任何类型变量
2.2.1 字符型
在Python中使用引号(单引号、双引号、三引号)括起来的均为字符型,如'abc',"abc","""abc"""。示例代码如下所示:
a="China"
b='China'
c="""China"""
print(type(a),type(b),type(c))
运行结果如下所示:
<class 'str'> <class 'str'> <class 'str'>
2.2.2 元组
在Python中元组的定义语法格式如下所示:
(item1,item2,...,itemn)
或
item1,item2,...itemn
- 这里推荐第一种写法
- 元组两个关键点小括号和逗号
创建元组示例如下所示:
a=1,2,3
b=(1,2,3)
c=(1,)
常见的元组一般为一维,也可以创建多维元组,如((1,2),(3,4))
2.2.3 字典
在Python字典的定义格式语法如下所示:
{
key1:value1,
key2:vallue2,
...
keyn:valuen,
}
- 字典中每个元素是key:value的形式成对出现
- 定义字典使用大括号,每个键值对使用冒号进行分隔,不同的键值对之间使用逗号分隔
- 最后一个键值对后面的逗号可以省略,一般建议是不要省略,便于后面继续添加元素
示例代码如下所示:
d={
"beijing":"beijing",
"shanghai":"shanghai",
"jiangsu":"nanjing",
"zhejian":"hangzhou",
"hubei":"wuhai",
}
2.2.4 集合
在Python中,集合的定义形式有以下两种方法:
{item1,item2,...itemn}
或
set(列表或元组)
- 在使用大括号定义集合时,里面的元素不能为空,否则则会变为字典类型
- 使用set()定义集合时,里面必须为列表或元组
- 在集合中是不会出现重复元素的,因此可以使用集合进行去重
示例代码如下所示:
a={1,2,3,4,5}
b=(1,2,3,4,5)
c=set(b)
2.2.5 列表
在Python中,列表的定义格式如下所示:
[item1,item2,...,itemn]
- 列表使用中括号进行定义,每个元素使用逗号进行分隔
示例代码如下所示:
[1,2,3]
2.2.6 索引和切片
- 索引:代表指定对象所处的位置,在Python中索引从0开始,而不是1
- 切片:通常形式为startIndex : endIndex : step,这里需要注意在取值时,是包含startIndex对应的元素,但不包含endIndex对应的元素,step为对应的步长(简单来讲是含前不含后)
- 索引是获取单个元素,而切片则是获取一组元素
索引可以为正值也可以负值,正索引从0开始,从左到右的形式取值,负索引从-1开始,从右向左路的形式取值。
以上详细查看如下示意图:
020206索引与切片.png对于容器类型的数据类型而言,列表和元组是可以使用索引和切片来进行获取指定的元素或元素组。
1.切片的通用写法
startIndex : endIndex : step
- 以上这种写法代表从指定索引startIndex开始,取值到指定索引endIndex,步长为step。但这三个值并不是每次必须要填写,还可以省略掉
2.切片省略endIndex和step
startIndex :
- 以上这种写法代表从索引startIndex开始,取值到末尾,步长为默认步长1
3.切片省略startIndex和step
: endIndex
- 以上这种写法代表从索引0开始,取值到指定的索引endIndex位置,步长为默认步长1
4.省略step
startIndex : endIndex
- 以上这种写法代表从指定索引startIndex开始,取值到指定的索引endIndex位置,步长为默认步长1
5.省略startIndex和endIndex
::step
- 以上这种写法代表获取所有元素,但步长为指定的步长step
6.全部省略
::
- 以上这种写法代表获取所有元素且默认步长为1
示例代码如下所示:
a=[0,1,2,3,4,5,6,7,8,9]
print(f"[startIndex:endIndex:step] - {a[2:5:1]}")
print(f"[startIndex:] - {a[3:]}")
print(f"[:endIndex] - {a[:5]}")
print(f"[startIndex:endIndex] - {a[2:6]}")
print(f"[:step] - {a[::2]}")
print(f"[::] - {a[::]}")
print(f"[::step] - {a[::-1]}")
print(f"[startIndex:endIndex] - {a[-5:-3]}")
输出结果如下所示:
[startIndex:endIndex:step] - [2, 3, 4]
[startIndex:] - [3, 4, 5, 6, 7, 8, 9]
[:endIndex] - [0, 1, 2, 3, 4]
[startIndex:endIndex] - [2, 3, 4, 5]
[:step] - [0, 2, 4, 6, 8]
[::] - [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[::step] - [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[startIndex:endIndex] - [5, 6]