目录
1、数据类型转换
可变数据类型:列表,字典,集合
不可变数据类型:字符串,数字,元组
容器数据类型:字符串,列表,元组,集合,字典
非容器数据类型:数字,布尔类型
1.1 基础数据类型转换
定义:把一个数据类型转换为另一个数据类型。
自动类型转换:
例如a=123,b=true 则a+b=124,因为true和数字运算时转为数字1。当两个不同的值进行运算时,结果会向更高的精度进行计算(True < 整形 < 浮点 < 复数)。
强制类型转换:
str() | 转为字符串类型 |
int() | 转为整数类型 |
float() | 转为浮点类型 |
bool() | 转为布尔类型 |
list() | 转为列表类型 |
tuple() | 转为元组类型 |
dict() | 转为字典类型 |
set() | 转为集合类型 |
注意:字符串转数字类型时,如果字符串中是纯数字则可以转换,其他的都不行。其他容器不能转为数字int类型。浮点类型的转换和int类型一样,不过转换的结果是浮点。布尔类型可以把其他类型转换为布尔类型的True或False。
注意:其他类型转布尔类型为FALSE的情况:' ' (空字符串),0, 0.0,False,[ ],{ },( ),set()。
1.2 容器数据类型转换
字符串转换为列表类型时,会把字符串中的每一个字符当做列表的元素。非容器类型不能转换成列表类型;其他如集合,字典,元组也可以转换为列表,但是字典类型转换成列表类型时,只保留字典中的键。
而对于其他类型转换元组、集合类型,和列表类型的强制转化一样。
对于其他类型转字典类型,非容器类型依然不行;列表可以转换为字典,要求是一个二级列表,并且里面的每个二级元素只能有两个值。而对于元组与集合也必须是二级的。
注意:将集合转换成字典时,里面的元素不能是集合,是元组的时候就可以转换。
2、 运算符
算术运算符:
运算符 | 描述 | 实例 |
+ | 两个对象相加 | 4 + 6 输出为10 |
- | 两个对象相减 | 14 - 4 输出为10 |
* | 两个对象相乘 | 2 * 5 输出为10 |
/ | 两个对象相除 | 110 / 11 输出为10 |
% | 取模,返回余数 | 3 % 2输出结果1 |
** | 幂,返回x的y次幂 | 2 ** 3 输出结果为8 |
// | 取整除,向下取整数 | 9 // 2 输出结果为4 |
字符串运算:字符串与数字不能直接参与运算;但是字符串和字符串使用 + ,结果是两个字符串的拼接,字符串如果和数字使用 * ,就是重复前面的字符串。
字符串的拼接:
赋值运算符:
运算符 | |
= | c = 1 + 2,结果为3 |
+= | 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 |
比较运算符:
== != > < >= <=
逻辑运算符:
a与b均为布尔类型
运算符 | 逻辑表达式 | 描述 | |
and | a and b | 如果a或者b有一个或者两个都为False,a and b 返回False,即有假则假 | |
or | a or b | 如果a或者b有一个为True,a or b 返回True,即有真为真 | |
not | not a | 如果a为True,返回False,如果a为False,返回True |
优先级: not > and > or
二进制运算:
运算符 | 实例 |
bin() | bin(2)=‘0b10’ |
oct() | oct(0b101)='0o5' |
hex() | hex(0o10)='0x8' |
位运算:
运算符 | 描述 |
& | 将两个二进制数字进行比较,两个都是1结果就是1,否则为结果为0 |
| | 将两个二进制数字进行比较,只要有一个是1就是1,两个都是1结果才是0 |
^ | 将两个二进制数字进行比较,不同为1,相同为0 |
~ | 将一个二进制数字进行变化,0变1,1变0 |
>> | 将二进制数全部右移若干位数,>>右边的数字即指定的位数 |
<< | 将二进制数全部左移若干位数,<<左边的数字即指定的位数,高位丢弃,低位补0 |
成员运算符:
y为容器类型
运算符 | 描述 | 实例 |
in | 如果在指定的序列中找到值返回True,否则返回False | x 在y 序列中, 如果x 在y 序列中返回True |
not in | 如果在指定的序列中没有找到值返回True,否则返回False | x 不在y 序列中, 如果x 不在y 序列中返回True |
注意:如果是字典类型,只能检测键
身份运算符:
运算符 | 描述 | 实例 |
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似id(x) == id(y) , 如果引用的是同一个对象则返回True,否则返回False |
not is | not is not 是判断两个标识符是不是引用自不同对象 | x is not y ,类似id(a) != id(b)。如果引用的不是同一个对象则返回结果True,否则返回False |