Python中常见的数据类型有:
- int 整形
- bool 布尔类型
- str 字符串
- float 浮点型
- list 列表
- dict 字典
- set 集合
- tuple 元组
本篇文章会讲解整形(int)、布尔类型(bool)、字符串(str)以及它们常见的方法。
1. 整形
整形是十进制的统称,在任何编程语言中都不陌生,常用来表示序号、年龄等
1.1 定义
num = 10 # 在python中定义一个变量不用声明类型,但是python的自省机制能在程序运行时获取到变量的类型
1.2 独有方法
# 在python中整形(int)并没有独有方法
# 整形是十进制,可通过bin(i)、oct(i)、hex(i)将整形分别转换为2进制、8进制、16进制
print(bin(16)) # 0b10000
print(oct(16)) # 0o20
print(hex(16)) # 0x10
1.3 公共方法
加减乘除(计算)
print(1 + 2) # 3
print(1 * 2) # 2
print(2 - 1) # 1
1.4 转换
布尔类型和字符串可int()
转换成整形,但是要注意的是并不是所有的字符串都可以转换成整形,字符串中必须只含有数字(可以是不同进制)才能被转换,否则会抛出ValueError错误。
# 布尔类型转换
print(int(False)) # 0
print(int(True)) # 1
# 字符串转换
print(int("123",base=10)) # 123
print(int("0b10000",base=2)) # 16 可以看成先将字符串转换为二进制的值,再转换为十进制
print(int("0o20",base=8)) # 16 可以看成先将字符串转换为八进制的值,再转换为十进制
print(int("0x10",base=16)) # 16 可以看成先将字符串转换为十六进制的值,再转换为十进制
# 浮点型转换
print(int(4.5)) # 4
1.5 其他(Python3与Python2的区别)
- 长整型的区别
- 在Python2中整形分为长整型(long)和整形(int),两者只是范围上的区别
- int,可表示的范围:-9223372036854775808~9223372036854775807
- long,整数值超出int范围之后自动会转换为long类型(无限制)
- 在Python3中舍去了长整型的概念,且对整形的长度不再限制
- 在Python2中整形分为长整型(long)和整形(int),两者只是范围上的区别
- 地板除(floor division)
- 在Python2中使用
/
计算两个整数会得到一个整数且规则为向下整除。
print(3/2) # 1
- 在Python3中使用
/
计算两个整数会得到一个浮点数。
print(3/2) # 1.5
- 在Python2中使用
2. 布尔类型
布尔类型其实就是“真”或“假”
2.1 定义
is_true = True
is_true = False
2.1 独有功能
无
2.2 公共功能
# 布尔类型也支持加减,True、False会分别看作1、0,就相当于将布尔类型转换成整形
print(True + True) # 2
2.4 转换
几乎所有的数据类型都可以转换成布尔类型。
# 转换规则总结如下:数字0、空字符串、空字典、空列表、空元组转换后为False,其余的全为True
2.5 其他
- 在Python中值或变量可以作为判断条件,因为它们都可以转换成布尔值, 如果在
if
、while
条件后面写一个值当做条件时,他会默认转换为布尔类型,然后再做条件判断。
if 值:
pass
while 值:
pass
if "1":
print("真方便")
3. 字符串
字符串,我们平时会用他来表示文本信息。例如:姓名、地址、自我介绍等。
3.1 定义
str = "帅哥"
3.2 独有功能
这里会介绍常用的字符串方法,更多的方法可以参考Python官方文档
1. 判断字符串是否以XXX开头,返回一个布尔值 (startswith方法)
v1 = "叨逼叨的一天,烦死了" result = v1.startswith("叨逼叨的一天") print(result)# 值为True
2. 判断字符串是否以XXX结尾,返回一个布尔值 (endswith方法)
v1 = "叨逼叨的一天,烦死了" result = v1.endswith("烦死了") print(result)# 值为True
3. 判断字符串是否为十进制,返回一个布尔值 (isdecimal方法)
v1 = "123" result = v1.isdecimal() print(result) # 值为True # isdecimal 方法只针对阿拉伯数字如果需要识别特殊的数字,可用isdigit方法 v1 = "123" print(v1.isdecimal()) # True v2 = "①" print(v2.isdecimal()) # False v3 = "123" print(v3.isdigit()) # True v4 = "①" print(v4.isdigit()) # True
4. 去除字符串两端的空格、换行符、制表符,得到一个新字符串 (strip方法)
v1 = " 你好 " result = v1.strip() print(result) # "你好" # strip方法只能处理两端的空格、换行符、制表符,对字符串中间的无效 v1 = " H e l l o " result = v1.strip() print(result) # "H e l l o" # 补充 strip方法可用接收参数,代表去除两边的某些字符,同时还可以指定方向 v1 = "oH e l l oo" result = v1.strip("o") print(result) # "H e l l o" v1 = "oH e l l oo" result = v1.rstrip("o") print(result) # "oH e l l o" v1 = "oH e l l oo" result = v1.lstrip("o") print(result) # "H e l l oo"
5. 将字符串变为大写,生成一个新点字符串 (upper方法)
v1 = "hello" result = v1.upper() print(result) # "HELLO"
6. 将字符串变小写,生成一个新的字符串 (lower方法)
v1 = "HELLO" result = v1.lower() print(result) # "hello"
7. 将字符串内容替换,生成新的字符串 (replace方法)
v1 = "你是个好人" result = v1.replace("好人","坏人") print(result) # "你是个坏人"
8. 字符串切割,得到一个列表 (split方法)
# split方法可以接收两个参数,第一个参数为分割依据,第二个参数为切割第几个元素(默认全部切割) v1 = "我,真,帅" result = v1.split(",") print(result) # ["我","真","帅"] result = v1.split(",",1) print(result) # ["我","真,帅"] # 同时还存在rsplit方法,只是切割默认的方向不一样,用法与split类似 v1 = "我,真,帅" result = v1.rsplit(",",1) print(result) # ["我,真","帅"]
9. 字符串拼接,得到一个新的字符串 (join方法)
data = ["我","真","帅"] result = ",".join(data) print(result) # "我,真,帅"
10. 格式化字符串,得到一个新的字符串 (format方法)
v1 = "爱好:{},{}" result = v1.format("打篮球","听音乐") print(result) # "爱好:打篮球,听音乐" # format方法还支持使用指定参数传值 v1 = "爱好:{one,{two}" result = v1.format(one="打篮球",two="听音乐") print(result) # "爱好:打篮球,听音乐"
11. 将字符串转换成字节类型 (encode方法)
# 该方法常用于网络传输数据 v1 = "你好" # unicode,字符串类型 result = v1.encode("utf8") print(result) # b'\xe4\xbd\xa0\xe5\xa5\xbd' # 字节类型可通过decode方法转换成字符串 v1 = result.encode("utf8") print(v1) # "你好"
12. 将字符串内容居中、居左、居右展示 (center方法、rjust方法、ljust方法)
v1 = "王老汉" data = v1.center(21, "-") print(data) #---------王老汉--------- data = v1.ljust(21, "-") print(data) # 王老汉------------------ data = v1.rjust(21, "-") print(data) # ------------------王老汉
3.3 公共功能
1. 相加 (字符串+字符串)
print("abc" + "def") # "abcdef"
2. 相乘 (字符串 * 正整数)
print("abc" * 2) # "abcabc"
3. 计算长度 (len方法)
print(len("abc")) # 3
4. 通过索引获取字符串中的字符
message = "来做点py交易呀" print(message[0]) # "来" print(message[1]) # "做" print(message[2]) # "点" print(message[-1]) # 呀 print(message[-2]) # 易 print(message[-3]) # 交 # 需要注意的是字符串可以通过索引来获取值,但是不能修改。因为字符串是不可变类型,后面我们还会提到。 #想要修改只能重新赋值
5. 切片
message = "来做点py交易呀" print(message[0:2]) # "来做" print(message[3:7]) # "py交易" print( message[3:] ) # "py交易呀" print( message[:5] ) # "来做点py" print(message[4:-1]) # "y交易" print(message[4:-2]) # "y交" print( message[4:len(message)] ) # "y交易呀" # 这里同样要注意字符串切片只能获取值,不能修改
6. 步长
name = "生活不是电影,生活比电影苦" print( name[ 0:5:2 ] ) # 输出:生不电 【前两个值表示区间范围,最有一个值表示步长】 print( name[ :8:2 ] ) # 输出:生不电, 【区间范围的前面不写则表示起始范围为0开始】 print( name[ 2::3 ] ) # 输出:不电,活电苦 【区间范围的后面不写则表示结束范围为最后】 print( name[ ::2 ] ) # 输出:生不电,活电苦 【区间范围不写表示整个字符串】 print( name[ 8:1:-1 ] ) # 输出:活生,影电是不 【倒序】
7. 循环
- while循环
message = "来做点py交易呀" while index > len(message): print(message[index]) index += 1
- for循环
massage = "来做点py交易呀" for a in massage: print(a)
3.4 转换
一般情况下,只有整型转字符串才有意义。
num = 999
data = str(num)
print(data) # "999"
data_list = ["abc","bcd",999]
data = str(data_list)
print(data) # '["abc","bcd",999]'
3.5 其他
字符串是不可变类型,想要修改只能重新赋值 !
原文作者: 小吴同学
原文链接: Python基础之数据类型(一)
欢迎转载,文章有错误请联系我修改,感谢!