Python的数据类型转换和运算符
一、数据类型转换
1.1 意义
之所以会存在数据类型转换,这是因为有时获取的数据为字符串格式,如:通过input函数接收键盘的输入。此时将该数据需与指定类型的数据进行运算,就会报错。因此需进行数据类型转换。当然,数据类型转换的前提是结果可预知,也就是保证该字符串确实能转换为对应的数据类型。而数据类型的转换则需用Python内置的函数。
1.2 转换函数
下面给出Python内置的常见的数据转换函数:
函数
类比Java
说明
int(x[, base])
Integer.parseInt
将x转换为一个整数
float(x )
Float.parseFloat
将x转换为 个浮点数
complex(real [,imag ])
无
创建 个复数,real为实部,imag为虚部
str(x )
String.valueOf
将对象 x 转换为字符串
repr(x )
无
将对象 x 转换为字符串
eval(str )
ScriptEngin对象的eval方法
来计算在字符串中的有效Python表达式,并返回 个对象
tuple(s )
Collections.unmodifiableList
将序列 s 转换为 个元组
list(s )
new ArrayList
将序列 s 转换为 个列表
set(s)
new HashSet
将序列s转换为一个集合
chr(x )
直接强转为char
将 个整数转换为 个Unicode字符
ord(x )
直接强转为int
将 个字符转换为它的ASCII整数值
hex(x )
Integer.toHexString
将 个整数转换为 个 六进制字符串
oct(x )
Integer.toOctalString
将 个整数转换为 个 进制字符串
bin(x )
Integer.toBinaryString
将 个整数转换为 个 进制字符串
1.3 示例
下面给出对应的示例:s = "12" # 字符串转换整数 i = int(s) print(f"i的值为:{i}, 类型为:", type(i)) # 字符串转为float s = "3.14" f = float(s) print(f"f的值为:{f}, 类型为:", type(f)) # 获取复数类型 c = complex(3, 2) print(f"c的值为:{c}, 类型为:", type(c)) # 对象转字符串 snum = str("12") print(f"snum的值为:{snum}, 类型为:", type(snum)) # 对象转字符串,与str的区别在于,若被转换的对象本就为字符串,则会额外增加单引号 rnum = repr("12") print(f"rnum的值为:{rnum}, 类型为:", type(rnum)) arr = ["Tom", "Jerry", "Spike"] # 序列转元组 t = tuple(arr) print(f"t的值为:{t}, 类型为:", type(t)) # 序列转列表 l = list(arr) print(f"l的值为:{l}, 类型为:", type(l)) # 序列转集合 ss = set(arr) print(f"ss的值为:{ss}, 类型为:", type(ss)) # 整数转对应的字符,这里的字符的类型依然为字符串 c = chr(65) print(f"c的值为:{c}, 类型为:", type(c)) # 字符类型转整数 o = ord("A") print(f"o的值为:{o}, 类型为:", type(o)) # 整数转换为十六进制 h = hex(10) print(f"h的值为:{h}, 类型为:", type(h)) # 整数转换为八进制 oc = oct(10) print(f"oc的值为:{oc}, 类型为:", type(oc)) # 整数转换为二进制 b = bin(10) print(f"b的值为:{b}, 类型为:", type(b))
执行结果如下:
二、运算符
所谓运算符就是一种特殊的符号,可实现数据的赋值、比较和运算等。与Java类似,Python的运算符也大致分为:算术运算符、赋值运算符、比较运算符、逻辑运算符以及位运算符等。
2.1 算术运算符
算术运算符主要用于实现常见的一些算术运算,如:加、减、乘、除、求余等。下面为Python中提供的算术运算符:
运算符
描述
+
加
-
减
*
乘
/
除
//
整除
%
求余
**
指数
需要说明的是,这里的除与Java有些差别。对于Java而言,使用" / "做除法运算时,若参与运算的数据都为整数类型,则进行整除运算;若参与运算的数据至少含一个浮点数类型,则会保留小数位。但在Python中,使用" / "做除法运算时,无论数据类型为整数还是浮点数,都会保留小数。若需进行整除操作,则必须使用专门的整除运算符:" // "。
下面给出对应的例子:# 加法 print("3 + 2 =", 3 + 2) # 减法 print("3 - 2 = ", 3 - 2) # 乘法 print("3 * 2 = ", 3 * 2) # 除法 print("3 / 2 = ", 3 / 2) # 整除 print("3 // 2 = ", 3 // 2) # 求余 print("3 % 2 = ", 3 % 2) # 指数 print("3 ** 2 = ", 3 ** 2)
执行结果如下:
2.2 赋值运算符
2.2.1 单赋值运算符
对于赋值运算符而言,Python与Java一样,均使用" = "。下面给出对应的例子:# 为单个变量赋值 num = 1 print("num:", num) # 多个变量符相同的值 a = b = 10 print("a = ", a, ", b = ", b)
执行结果如下:
当然,python除可使用如上方式进行赋值外,还使用多变量赋值的语法,下面给出对应的例子:# 多变量赋值 num1, float1, str1 = 10, 0.5, "hello world" print("num1:", num1) print("float1:", float1) print("str1:", str1)
执行结果如下:
2.2.2 复合赋值运算符
复合赋值运算符本质上也是赋值运算符,只不过与常见的算术运算符组合使用后有了新的含义,如:a += b相当于a = a + b。下面给出复合运算符对应的例子:# += a = 3 a += 2; print("a的值为:", a) # -= b = 3 b -= 2 print("b的值为:", b) # *= c = 3 c *= 2 print("c的值为:", c) # /= d = 3 d /= 2 print("d的值为:", d) # //= e = 3 e //= 3 print("e的值为:", e) # %= f = 3 f %= 2 print("f的值为:", f) # **= g = 3 g **= 2 print("f的值为:", g)
执行结果如下:
2.3 比较运算符
比较运算符通常用来对两个数据进行比较,下面给出常见的比较运算符:
运算符
描述
==
判断两个操作数是否相等,若相等返回True,否则返回False
!=
判断两个操作数是否不相等,若不相等返回True,否则返回False
>
判断左侧操作数是否大于右侧操作数,若大于返回True,否则返回False
<
判断左侧操作数是否小于右侧操作数,若小于返回True,否则返回False
>=
判断左侧操作数是否大于等于右侧操作数,若大于等于返回True,否则返回False
<=
判断左侧操作数是否小于等于右侧操作数,若小于等于返回True,否则返回False
下面给出对应的示例:a = 7 b = 5 print("a == b : ", a == b) print("a != b : ", a != b) print("a > b : ", a > b) print("a < b : ", a < b) print("a >= b : ", a >= b) print("a <= b : ", a <= b)
执行结果如下:
2.4 逻辑运算符
逻辑运算符主要用于连接两个布尔值或布尔表达式,对于Python而言,其逻辑运算符有三个,分别是:与(and)、或(or)和非(not)。下面给出三者代表的含义:
运算符
逻辑表达式
描述
and
x and y
表示与,若x为False,则返回False,否则返回y
or
x or y
表示或,若x为True,则返回True,否则返回y
not
not x
表示非,若x为True,则返回False,否则返回True
下面给出对应的例子:a = 1 b = 2 c = 3 print((a < b) and (b < c)) print((a > b) and (b < c)) print((a > b) or (b < c)) print(not(a > b))
执行结果如下:
需要说明的是,Python中的逻辑运算符具备短路功能。比如下面的例子:print(10 < 5 and 3 / 0 > 0) print(10 > 5 and 3 / 0 > 0)
执行结果如下:
也就是说,当通过首个布尔值或布尔表达式可推断出整个表达式的值时,不会执行后续的判断。由于10 < 5为False,此时可推断整个表达式的值为False,因此不会尝试执行后续的3 / 0 > 0操作,因此未抛出异常;但对于第二个表达式而言,首个布尔表达式10 > 5为True,因此还需进行后续的3 / 0 > 0判断,因此抛出了除零异常。
需要说明的是,由于在Python中,数字类型也可自动转换为布尔类型,因此逻辑运算符还可在两个数字间进行运算。当逻辑运算符在数字间进行运算时,若为and,则只要存在一个为0的值,则直接返回0,否则返回最后一个非0的数字;若为or,当所有值均为0时,才返回0,否则返回首个非0的数;若为not,则表达式为非0数字时,返回False,否则返回True。下面给出一个例子:a = 0 b = 1 c = 3 d = 4 print("a and b and c的结果为:", a and b and c) print("b and c and d的结果为:", b and c and d) print("a or b or c的结果为:", a or b or c) print("a or c or d的结果为:", a or c or d) print("a or a or a的结果为:", a or a or a) print(not a) print(not b) print(not c)
执行结果如下:
2.5 位运算符
位运算符主要用于对整数进行移位操作,常见的位运算符有:左移(<<)、右移(>>)、按位与(&)、按位或(|)、按位反(~)以及按位异或(^)等。这与Java中的位运算类似。
下面给出对应的例子:# 左移操作 a = 6 print("a << 1的值为:", a << 1) # 右移操作 print("a >> 1的操作为:", a >> 1) b = 4 # 按位与 print("a & b的值为:", a & b) # 按位或 print("a | b的值为:", a | b) # 按位反 print("~a的值为:", ~a) # 按位异或 print("a ^ b的值为:", a ^ b)
执行结果如下:
51款精品川菜,款款畅销,味道一绝,大家可以收藏起来了头条创作挑战赛51款精品川菜,款款畅销,味道一绝,大家可以收藏起来了。家常红烧牛筋1。牛筋处理干净改刀切成小块备用。,红泡椒剁细备用大蒜切粒,姜切片葱切段备用。起锅烧水,加入料酒葱
主枢纽归位后,成都国际航空枢纽如何飞得更高?来源四川日报川观新闻川观新闻记者王眉灵雷倢3月26日,民航2023夏秋航季开启,成都国际航空枢纽迎来重大变化进入第五个航季的主枢纽成都天府国际机场,正式运营国际(地区)航班。首架国
赏花直达!城阳巴士公司开出907路赏花专列3月24日,以花开山色峪樱你而来为主题的2023青岛城阳夏庄山色峪樱桃花季拉开唯美大幕,为方便市民到山色峪踏青观赏樱桃花,青岛城运控股集团城阳巴士第一分公司开出907路赏花专列,和
汽车降价潮调查政府补贴含金量高,车企让利并不多3月,湖北省的大额汽车补贴将年初这波汽车降价潮推向了高潮,此后不断有省市与车企跟进,截止日期大多是3月31日。据红星资本局不完全统计,今年以来已有上百款车型通过多种方式降价促销,甚
香港年轻人从深圳带货成热潮,也追捧网红美食据香港网友报料近日,以往内地人钟情香港品牌,通过代购来港扫货,但随着电商崛起,香港代购的风光已成往事。从前的香港代购纷纷转身内地,反过来从深圳带货回香港,糕点奶茶烧烤什么鸡鸭鱼等内
重大资产重组概念哪家公司能够乌鸦变凤凰?上周的行情结束了,很多小伙伴们,想哭的心都有了。因为上周的行情就是典型的结构行情,所有的资金都涌入了人工智能AI赛道,有这个概念的的,犹如得道升天,没有此概念的,大都股票基本上连续
淄博烧烤为何能抓住年轻人的心近日,山东淄博因独具特色的烧烤文化火速出圈,成为全国各地大学生竞相奔赴打卡的网红城市。类似大学生组团到淄博吃烧烤等话题,频繁冲上各大网络平台热搜。淄博火车站的统计显示,该站3月5日
注意!10个器官催老剂,可能就藏在你身边!身体像一个机器,每个器官都在机体的运行中起到很重要的作用。衰老会让身体中的器官功能减弱,尤其是藏在家里的一些催老剂还会加速衰老,却总被人们忽略。01hr心脏催老剂爱吃高脂的食物千万
合肥政府出手拯救蔚来,约定的6年之期已过一半,成绩如何?资本的力量大到无法想象,即使巨额亏损,依然继续烧钱,几时方休?一份财报近日,蔚来汽车公布2022年度财报。财报数据显示,2022年蔚来共计卖出12。25万辆整车,新能源汽车市场占比
第一批去泰国的人,开始后悔了!头条创作挑战赛泰国已经不是之前的泰国了,它现在是钮钴禄。报复性赚钱。泰!自从出入境自由后,好像一夜之间朋友圈只剩下两种人刚从泰国旅游回来的和准备去泰国的。可不少去了泰国的过来人,却
女明星全员东南亚,徐璐有神器女明星都在泰兰德,东南亚可以走一波?宋茜进入营业阶段,入驻小红书并更新第一条笔记。从沙滩起跳高度可以看出,她在泰国玩得很开心。针织短背心搭配牛仔热裤,氧气感与质感兼备。殊不知,在东