Python之数据类型

一)数字类型

1. 数字类型的表示方法
(1)整型

通常被称为是整型或整数,可以是正整数或负整数,不带小数点。Python3整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的。
整型的四种表现形式:

  • 2 进制:以’0b’开头。例如:'0b11011’表示10进制的27
  • 8 进制:以’0o’开头。例如:'0o33’表示10进制的27
  • 10进制:正常显示
  • 16进制:以’0x’开头。例如:'0x1b’表示10进制的27

各进间数字进行转换(内置函数):

  • bin(i):将i转换为2进制,以“0b”开头
  • oct(i):将i转换为8进制,以“0o”开头
  • int(i):将i转换为10进制,正常显示
  • hex(i):将i转换为16进制,以“0x”开头
(2)浮点数

浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)

(3)布尔类型

所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔True或False值、空对象、值为零的任何数字或者Null对象None的布尔值都是False。在Python3中True=1,False=0,可以和数字型进行运算。
下列对象的布尔值是False: None;False;0(整型),0.0(浮点型);0L(长整形);0.0+0.0j(复数);“”(空字符串);[](空列表);()(空元组);{}(空字典)。
值不是上列的任何值的对象的布尔值都是True,例如non-empty,non-zero等。用户创建的类实例如果是定义了nonzero(nonzeor())或length(len())且值为0,那么它们的布尔值就是False。

(4)复数

复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

2.实例
a.根据身高体重计算BMI指数

BMI指数即为身体质量指数,是国际上衡量人体胖瘦程度以及是否健康的一个标准,计算公式为:体质指数(BMI)=体重(kg)/(身高2)(m),本实例通过编写程序,实现根据输入的身高体重计算BMI值。具体代码如下所示。

“““
    根据身高体重计算某个人的BMI指数:
    体质指数(BMI)=体重(kg)+身高2(m)
”””
    Height = float(input(‘请输入您的身高(m):’))
    Weight = float(input(‘请输入年您的体重(kg):’))
    BMI = weight / (height * height)
    Print(‘您的BMI值为:’,BMI)
3.数字类型转换

Python内置了一系列可实现强制类型转换的函数,保证用户在有需求的情况下,将目标数据转换成指定的类型,数字之间的转换函数有int()、float()、str(),关于这些函数的功能说明如下表。

函数 说明
int() 将浮点型、布尔类型和符合数值类型规范的字符串转换成整型
float() 将整型和符合数值类型规范的字符串转换成浮点型
str() 将数值类型转换成字符串

在使用类型转换函数时需要注意以下两点:

  1. int()函数、float()函数只能转换符合数字类型格式规范的字符串。
  2. 使用int()函数将浮点数转换成整数时,若有必要会发生截断(取整),而非四舍五入。

用户在使用类型转换函数式必须考虑到以上两点,否则可能会因字符串不符合要求而导致在转换时发生错误,或因截断而产生的预期之外的计算结果。

4. 数字类型的运算

与其他的编程语言相比较,Python语言有更丰富的运算符,并且功能更加强大。因此,Python数据可以用相对简单的方式,实现丰富的运算功能。下面将介绍Python中的算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符,以及各运算符的优先级。

(1)算术运算符

算术运算符主要用于两个对象算数计算,包括+、-、*、/、//、%、**,他们都是双目运算符,只要在终端输入两个操作数和一个算术运算符组成的表达式,Python解释器就会解析表达式,并打印结果。 假设变量: a=10,b=20,Python算术运算符的功能描述以及实例如表所示。

运算符 描述 实例
+ 加 - 两个对象相加 a + b 输出结果 30
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/ 除 - x除以y b / a 输出结果 2
% 取模 - 返回除法的余数 b % a 输出结果 0
** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000
// 取整除 - 返回商的整数部分(向下取整) >>> 9//24>>> -9//2-5
(2)比较运算符

比较(关系)运算符用于两个对象比较,包括==、!=、<、>、=<、>=,经常用于布尔测试,输出结果为True或False。
假设变量a为10,变量b为20,Python比较运算符的功能描述以及实例如表所示。

运算符 描述 实例
== 等于 - 比较对象是否相等 (a == b) 返回 False。
!= 不等于 - 比较两个对象是否不相等 (a != b) 返回 true。
<> 不等于 - 比较两个对象是否不相等 ( a <> b) 返回 true。这个运算符类似 != 。
> 大于 - 返回x是否大于y (a > b) 返回 False。
< 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。 (a < b) 返回 true。
>= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。
<= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 true。
(3)赋值运算符

赋值运算符用于对象的赋值,将运算符右边的值(或计算结果)赋给运算符左边,主要包括=、+=、-=、*=、/=、%=、**=、//=。
假设变量a为10,变量b为20,Python赋值运算符的功能描述以及实例如表所示。

运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
(4)逻辑运算符

逻辑运算符用于逻辑运算(与或非等)。Python语言支持逻辑运算符,包括and(与)、or(或)、not(非),逻辑运算符可以将多个条件按照逻辑进行连接,变成复杂的条件。
假设变量 a 为 10, b为 20,Python逻辑运算符的功能描述以及实例如表所示。

运算符 逻辑表达式 描述 实例
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False
(5)位运算符

位运算符用于对Python对象进行按照存储的bit操作,包括&、|、^、~、<<、>>,按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下。
下表中变量 a 为 60,b 为 13,二进制格式如下:a = 0011 1100,b = 0000 1101。 a&b = 0000 1100,a|b = 0011 1101,a^b = 0011 0001,~a = 1100 0011,Python位算符的功能描述以及实例如表所示。

运算符 描述 实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数。 a >> 2 输出结果 15 ,二进制解释: 0000 1111
(6)成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,用于判断一个对象是否包含另一个对象,包括in、not in,Python成员运算符的功能描述以及实例如表所示。

运算符 描述 实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
(7)身份运算符

Python的一切数据都可以视为对象,每个对象都有3个属性:类型、值和身份。其中,类型决定了对象可以保存什么样的值;值代表对象表示的数据;身份就是内存地址,它是每个对象的唯一标识,对象被创建后身份不会发生任何变化。
身份运算符用于判断是不是引用自一个对象,包括is和is not,用于判断两个对象的内存地址是否相同。假设变量a的值为10,变量b的值为10,Python身份运算符的功能描述以及实例如表所示。

运算符 描述 实例
is 测试两个对象的内存地址是否相同,相同返回True,不同返回False。 >>>a = 10>>>b = a>>>a is bTrue
is not 测试两个对象的内存地址是否不同,不同返回True,否则返回False。 >>>a = 10>>>b = a>>>a is not bFalse
(8)运算符优先级

Python支持使用多个不同的运算符连接简单的表达式,实现相对复杂的动能,为了避免含有多个运算符的表达式出现歧义,Python为每一种运算符都设定了优先级。以下表列出了从最高到最低优先级的所有运算符。

运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 ‘AND’
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

二)字符串

1. 字符串的定义方式

字符串是一种表示文本的数据类型,它由符号或者数值组成的一个连续序列,Python中的字符串是不可变的,字符串一旦被创建便不可修改。 根据字符串中是否包含换行符,可以将字符串划分为单行字符串和多行字符串两种,他们各自定义的方式有所不同。

(1)单行字符串

Python支持使用单引号、双引号和三引号来定义字符串,通常情况下,单引号和双引号用于定于单行字符串。

#单引号定义字符串 
single_symbol = ‘hello python’ 
#双引号定义字符串 
double_symbol = “hello python”
(2)多行字符串

多行字符串一一对三引号(三个单引号或三个双引号)作为边界来表示,字符串中可以包含换行符、制表符或者其他的特殊字符,如:

 #三引号定义字符串
    three_symbol = ‘‘‘hello python learn python’’’
#或
    three_symbol =“ “ “hello python learn python” ” ”
#输出以上使用三引号定义的字符串,结果如下:
    hello python
          learn python

定义字符串时单引号和双引号可以嵌套使用,需要注意的是,使用双引号表示的字符串中允许嵌套单引号,但不允许包含双引号。例如:

mixture = “It ’s good” 
#单引号双引号混合使用 

此外,如果单引号或者双引号中的内容包含换行符,那么字符串会被自动换行。例如:

double_symbol = “hello \python”
#输出结果为: 
hello python
2. 字符串的格式化输出

Python的字符串可通过占位符%、format()方法和f-strings三种方式实现格式化输出,下面将分别介绍这三种方式。

(1)占位符

利用占位符%对字符串进行格式化时,Python会使用一个带有格式符的字符串作为模板,这个格式符用于为真实值预留位置,并说明真实值应该呈现的形式。 常见的占位符如表所示。

符号 说明 符号 说明
%s 字符串 %d 十进制整数
%o 八进制整数 %x 十六进制整数(a~f为小写)
%X 十六进制整数(A~F为大写) %e 指数(底写为e)
%f 浮点数
(2)format()方法

format()方法同样可以对字符串进行格式化输出,与占位符%不同的是,使用format()方法不需要关注变量的类型。 format()方法的基本使用格式如下:

 <字符串>.format(<参数列表>)  

在format()方法中使用“{}”为变量预留位置。
如果字符串中包含多个“{}”,并且“{}”内没有指定任何序号(从0开始编号),那么默认按照“{}”出现的顺序分别用format()方法中的参数进行替换;如果字符串“{}”中明确指定了序号,那么按照序号对应的format()方法的参数进行替换。
format()方法还可以对数字进行格式化,包括保留n位小数、数字补充和显示百分比,接下来将分别进行介绍。

  • 保留n位小数。使用format()方法可以保留浮点数的n位小数,其格式为“{:.nf}”,其中n表示保留小数位数。例如变量a的值为2.15363,使用format()方法保留3位小数;
  • 数字补齐。使用format()方法可以对数字进行补齐,其格式为“{:m>nd}”,其中m表示补齐的数字,n表示补齐后数字的长度。例如,某个序列编号从0001开始,此种编号可以在1之前使用3个“0”进行补齐;
  • 显示百分比。使用format()方法可以将数字以百位比形式显示,其格式为“{:.n%}”,其中n表示要保留的小数位。例如,变量num的值为0.23,将num值保留0位小数,并以百分比格式现实。
(3)f-strings

f-strings是从Python3.6版本开始加入Python标准库的内容,它提供了一种更为简洁的格式化字符串方法。
f-strings在格式上以f或F引领字符串,字符串中使用{}标明被格式化的变量。f-strings本质上不再是字符串常量,而是在运行时运算求值的表达式,所以在效率上优于占位符%和format()方法。
使用f-strings不需要关注变量的类型,但是仍需要关注变量传入的位置。

3. 字符串操作符

字符串在实际开发中经常被用到,掌握字符串的常用操作符有助于提高代码编写效率。假设a=“人生苦短”,b=“我用Python”,下表为常见的字符串操作符及其示例。

操作符 说明 示例
+ 连接字符串 a+b,结果为人生苦短,我用Python
* 复制字符串 a*2,结果为人生苦短人生苦短
>,<,==,!=,>=,<= 按照ASCⅡ值的大小比较字符 a==b,结果为False
in,not in 检查字符串中是否存在或不存在某个字串 a in b,结果为False

三)列表

列表是Python中最灵活的有序序列,它可以存储任意类型的元素,开发人员可以对列表中的元素进行添加、删除、修改等操作。本部分将对列表的创建、遍历和排序、添加、删除以及修改等操作进行介绍。

1. 列表的创建方式

3种创 建方式

  • 基本语法[]创建–基本语法[]创建列表时,只需要在“[]” 中使用逗号分隔每一个元素即可。
  • list()创建–使用list()创建列表,需要注意的是该函数接收的参数必须是一个可迭代类型的数据,使用list()可以将任何可迭代的数据转化成列表。
  • range()创建整数列表–range()创建的是一个整数列表,其语法为:
range([start,] end [,step])

start参数:可选,表示起始数字,默认是0。
end参数:必选,表示结尾数字。
Step参数:可选,表示步长,默认是1.
Python3中range返回的是一个range对象, 而不是列表。在使用时需要通过list()方 法将其转换成列表对象。

2.列表的遍历和排序

列表的遍历分为三种:

  • 依次遍历列表
  • for循环语句遍历列表
  • while语句遍历列表
3.列表的排序操作

如果希望对列表中的元素进行重新排列,则可以使用sort方法或者reverse方法实现。其中,sort方法是将列表中的元素按照特定的顺序重新排列,默认为由小到大。如果要将列表中的元素由大到小排列,则可以将sort方法中reverse参数的值设为True。reverse方法是将列表逆置。 接下来通过一个案例来演示这两种方法的使用,例如:

list_demo = [1,4,2,3,5]
list_demo.reverse()
print(list_demo)

list_demo.sort()
print(list_demo)
list_demo.sort(reverse=True)
print(list_demo)

上述实例中,第1行代码定义了一个包含5个数值元素的列表list_demo,第2-3行代码调用reverse方法将列表进行搁置后输出,第4-5行代码调用sort方法按照从小到大的顺序排列列表中的元素后进行输出,第6-7行代码调用sort方法按照由大到小的顺序排列列表中的元素后重新输出。程序运行的结果如图所示。
image.png

4.实例

商品价格区间设置与排序:
当我们在网上购物时,对于同一类型的商品,不同的商家设置的价格可能不同,如何选择一个价格中等的商品呢?例如现有一件商品,8个商家给出的价格如表所示。
Python之数据类型_第1张图片
用户根据提示“请输入最大价格:”和“请输入最低价格:”分别输入最大价格和最小价格,选择符合自己的需求价格空间,并按照提示“1.价格降序排序(换行) 2.价格升序排序(换行) 请选择排序方式:”输入相应的序号,最终将排序后的结果全部输出。具体代码和运行结果如图所示。

price_li = [955, 899, 920, 968, 999, 869, 912, 966]
section_li = []
max_section = int(input("请输入最大价格:"))
min_section = int(input("请输入最小价格:"))
for i in price_li:
    if min_section <= i <= max_section:
        section_li.append(i)
print("1.价格降序排序")
print("2.价格升序排序")
choice_num = int(input("请选择排序方式:"))
if choice_num == 1:
    section_li.sort(reverse=True)
else:
    section_li.sort()
print(section_li)

Python之数据类型_第2张图片

5.添加、删除和修改列表元素
(1) 添加元素

通过“+”号将两个序列连接,通过该方法也可以实现为列表添加元素。但是这种方法的执行速度要比直接使用列表对象的append()方法慢,所以建议在实现添加元素时,使用列表对象的append()方法实现。
列表对象append()方法用于在列表末尾追加元素,语法格式如下:

listname.append(obj) 

其中,listname为要添加元素的列表名称,obj为要添加到列表末尾的对象。
定义一个包括四个元素的列表,然后应用append()方法向该列表的末尾再添加一个元素,代码为:
image.png
①insert()方法 insert()方法主要用于在列表指定的位置插入元素。
image.png
②extend()方法 上面介绍的是向列表中添加一个元素,如果想要将一个列表中的全部元素添加到另一个列表中,可以使用列表对象的extend()方法,语法格式如下:

 listname.extend(sqe)

listname为原列表,sqe要添加的列表。语句执行后,sqe2的内容将追加到listname后面。

(2)修改元素

修改列表中的元素只需要通过索引获取该元素,然后再为其重新赋值即可。
定义一个保存3个元素的列表,然后修改索引值为1的元素,代码如下
image.png

(3)删除元素

删除元素常用的方法有del语句、remove()方法和pop()方法,具体介绍如下: ①del语句 del语句用于删除列表中指定位置的元素。
②remove()方法 remove()方法用于移除列表中的某个元素,若列表中有多个匹配的元素,只会移除匹配到的第一个元素。
③pop()方法 pop()方法用于移除列表中的某个元素,如果不指定具体元素,那么移除的就是列表中的最后一个元素。

6.嵌套列表

列表可以存储任何元素,当然也可以存储列表,如果列表存储的元素也是列表,则称为嵌套列表。 嵌套列表的创建方式与普通列表的创建相同。
例如: [ [0] , [1] , [1,2] ] 以上代码创建了一个嵌套列表,
该表中包含了3个列表,其中索引为0的元素为[0],索引为1的元素为[1],索引为2的元素为[2,3]。
嵌套列表元素的访问方式与普通列表一样,可以使用索引访问嵌套列表中的元素。若希望访问嵌套的内层列表中的元素,需要先使用索引获取内层列表,再使用索引访问被嵌套的列表中的元素。
如果希望嵌套列表的内层列表中添加元素,首先要获取内层列表,再调用相应的方法往指定的列表中添加元素。

四)元组

1. 元组的创建方式

元组的创建方式有两种,通过“()”来创建或者使用tuple()函数快速创建。

(1)通过“()”来创建

通过“()”来创建元组时,()也可以省略。 如果元组只有一个元素,则必须后面加逗号。这是因为解释器会把(1)解释为整数 1, (1,) 解释为元组。
Python之数据类型_第3张图片

(2)使用tuple()创建元组

使用tuple()函数创建元组时,如果不传入任何数据,就会创建一个空元组;如果要创建包含元素的元组,就必须传入可迭代类型的数据。
Python之数据类型_第4张图片

2. 访问元祖元素

可以通过索引或切片的方式来访问元组中的元素。

(1)使用索引访问单个元素

元组可以使用索引访问元组中的元素。
Python之数据类型_第5张图片

(2)使用切片访问元组元素

元组还可以使用切片访问元组中的元素。
image.png
上述例子定义了包含5个元素的元组,使用切片截取了索引2到索引4的元素。

3. 实例:中文数字对照表

阿拉伯数字具有简单易写、方便使用的特点,因此成为了最流行的数字书写方式,但是在使用阿拉伯数字时,可以对某些数字不漏痕迹地修改成其他数字。例如,将数字“1”改为数字“7”,将数字“8”改为数字“3”,为了避免不必要的麻烦,可以使用中文大写数字如壹、贰、叁、肆等替换阿拉伯数字。现实现将输入的阿拉伯数字转为中文大写数字,代码及运行结果如图所示。

 uppercase_numbers = ("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
number = input("请输入一个数字:")

for i in range(len(number)):
    print(uppercase_numbers[int(number[i])], end="")

image.png

五)字典

1. 字典的创建方式

Python中字典的创建方式有3中,包括使用花括号“{}”创建、使用内置函数dict()创建和调用dict的方法fromKeys创建。

(1)使用花括号“{}”创建

使用花括号“{}”创建字典时,字典中的键(key)和值(value)使用冒号连接,每个键值对之间使用逗号分隔。具体格式为:
{键1:值1,键2:值2,键3:值3,……}
image.png
当花括号中没有键值对时,创建的就是一个空字典。

(2)使用内置函数dict()创建

使用内置函数dict()创建字典时,键和值使用“=”进行连接,具体格式为:
dict(键1=值1,键2=值2,键3=值3,……)
image.png

(3)调用dict的方法fromKeys

调用该方法时通过参数指定所有的Key,所有的value的默认值都是None。
image.png

2. 字典的基本操作

Python为字典提供了一些很实用的内建方法,使用这些方法可以帮助读者在工作中应对涉及字典的问题,简化开发步骤。此外Python还提供了一些字典的常见操作,如表所示。
Python之数据类型_第6张图片

你可能感兴趣的:(python编程,python,开发语言)