Python 程序设计讲义(17):Python 的数据运算总结
对python 的数据运算进行总结。
Python 程序设计讲义(17):Python 的数据运算总结
Python 的数据运算包括赋值运算、算术运算、比较运算、位运算、逻辑运算等。本文对运算符的优先级、数据类型转换等进行总结。
一、运算符的优先级
各种运算符的优先级如下表所示:
运算符 | 说明 |
---|---|
** |
幂运算 |
~ |
取反运算 |
*, /, %, // |
乘、除、求余、整除 |
+, - |
加、减 |
<< |
左移位运算 |
>> |
右移位运算 |
& |
位与运算 |
^ |
异或运算 |
` | ` |
>, <, >=, <= |
大于、小于、大于或等于、小于或等于 |
==, != |
等于、不等于 |
**= |
幂增强赋值 |
*=, /= |
乘除增强赋值 |
+=, -= |
加减增强赋值 |
not |
逻辑非 |
and |
逻辑与 |
or |
逻辑或 |
二、数据类型转换规则
进行运算时,参与运算的数据类型可能有多种,如整数、浮点数、复数、字符串、布尔值等。在进行运算时,Python 会将运算符两侧的数据转换为同一种数据类型,然后再进行计算。数据类型转换的规则如下:
1、算术运算
(1)整数与浮点数计算
整数与浮点数计算时,将整数转换为浮点数,然后进行计算,运算结果为浮点数类型。
例如:
a,b=5,5.0
c=a+b
print(c,type(c))
运算结果为:
10.0 <class 'float'>
(2)整数与复数运算
整数与复数运算时,将整数转换为复数,运算结果为复数。
例如:
a,b=5,3-5j
c=a+b
print(c,type(c))
运算结果为:
(8-5j) <class 'complex'>
(3)浮点数与复数运算
浮点数与复数运算时,将浮点数转换为复数,运算结果为复数。
例如:
a,b=5.2,3-5j
c=a+b
print(c,type(c))
运算结果为:
(8.2-5j) <class 'complex'>
(4)整数、浮点数、复数与布尔值运算
当整数、浮点数、复数与布尔值进行运算时,将布尔值转换为整数(布尔值True转换为1,布尔值False转换为0
),然后与其他数据类型进行运算,得出相应类型的值。
例如:
a,b=True,False
c=2.5-7j
print(a+4,type(a+4)) #a=1
print(b+4,type(b+4)) #b=0
print(a+4.0,type(a+4.0))
print(a+c,type(a+c))
运算结果为:
5 <class 'int'>
4 <class 'int'>
5.0 <class 'float'>
(3.5-7j) <class 'complex'>
2、逻辑运算
(1)布尔类型与非布尔类型进行逻辑与运算
布尔类型与非布尔类型进行逻辑与运算,首先将布尔类型转换为布尔类型值,然后与非布尔类型进行运算。
运算时根据短路原则得到最终结果。如果左侧的逻辑值为真,结果就是右侧的数据值。如果左侧的逻辑值为假,结果就是逻辑值假。
例如:
#第一种情况:根据短路原则,左侧结果为真,则运算结果由右侧的值决定,此时运算结果为5
a=9>3 and 5
print(a,type(a))
#第二种情况:根据短路原则,左侧结果为假,则运算结果为False
a=1>3 and 5
print(a,type(a))
运算结果为:
5 <class 'int'>
False <class 'bool'>
(2)布尔类型与非布尔类型进行逻辑或运算
布尔类型与非布尔类型进行逻辑或运算,首先将布尔类型转换为布尔类型值,然后与非布尔类型进行运算。
运算时根据短路原则得到最终结果。如果左侧的逻辑值为真,结果就是真。如果左侧的逻辑值为假,结果右侧的数据值。
例如:
#第一种情况:根据短路原则,左侧结果为真,则运算结果为True
a=9>3 or 5
print(a,type(a))
#第二种情况:根据短路原则,左侧结果为假,运算结果由右侧的值决定,则运算结果为5
a=1>3 or 5
print(a,type(a))
运算结果为:
True <class 'bool'>
5 <class 'int'>
(3)非布尔类型与非布尔类型进行逻辑与运算
非布尔类型与非布尔类型进行逻辑与运算,首先将 and 左侧非布尔类型转换为布尔类型值,然后与非布尔类型进行运算。运算时根据短路原则得到最终结果,运算结果不是布尔类型值,而是非布尔类型对应的数据。
根据短路原则,如果左侧的逻辑值为真(非0),结果就是右侧的数据值。如果左侧的逻辑值为假(0),结果就是 0。
例如:
#第一种情况:先把and左侧的9转换为布尔值(True)。根据短路原则,运算结果由右侧的值决定,此时运算结果为5
a=9 and 5
print(a,type(a))
#第二种情况:先把and左侧的0转换为布尔值(False)。根据短路原则,运算结果由左侧的值决定,此时运算结果为0
a=2-2 and 5
print(a,type(a))
运算结果为:
5 <class 'int'>
0 <class 'int'>
(4)非布尔类型与非布尔类型进行逻辑或运算
非布尔类型与非布尔类型进行逻辑或运算,首先将or左侧的非布尔类型转换为布尔类型值,然后与非布尔类型进行运算。运算时根据短路原则得到最终结果,运算结果不是布尔类型值,而是非布尔类型对应的数据。
根据短路原则,如果左侧的逻辑值为真(非0),结果就是左侧的数据值。如果左侧的逻辑值为假(0),结果就是右侧的数据值。
例如:
#第一种情况:先把or左侧的9转换为布尔值(True)。根据短路原则,运算结果由左侧的值决定,此时运算结果为9
a=9.0 or 5.0
print(a,type(a))
#第二种情况:先把or左侧的0转换为布尔值(False)。根据短路原则,运算结果由右侧的值决定,此时运算结果为5
a=2-2 or 5.0
print(a,type(a))
运算结果为:
9.0 <class 'float'>
5.0 <class 'float'>
三、非布尔类型值与布尔类型值之间的对应关系
非布尔类型数据之间进行逻辑运算时,非布尔类型数据对应的布尔数据值如下表所示:
非布尔数据 | 布尔数据 |
---|---|
非0整数、非0浮点数=复数(0.0+0.0j除外)、非空字符串 |
True |
'', "", '''''', """""", 0, 0.0, 0.0+0.0j, None, (), [], {} |
False |
例如:
a=9.0 or 5
print(a,type(a))
a='' or 5
print(a,type(a))
a='''''' or 5.0
print(a,type(a))
运算结果为:
9.0 <class 'float'>
5 <class 'int'>
5.0 <class 'float'>

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)