Python基础之数据类型(一)

331 阅读7分钟

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中舍去了长整型的概念,且对整形的长度不再限制
  • 地板除(floor division)
    • 在Python2中使用/计算两个整数会得到一个整数且规则为向下整除。
    print(3/2)  # 1 
    
    • 在Python3中使用/计算两个整数会得到一个浮点数。
    print(3/2)  # 1.5
    

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中值或变量可以作为判断条件,因为它们都可以转换成布尔值, 如果在 ifwhile 条件后面写一个值当做条件时,他会默认转换为布尔类型,然后再做条件判断。
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基础之数据类型(一)
欢迎转载,文章有错误请联系我修改,感谢!