目录
1.整型(int)
整形是对十进制数的统称,整型可以进行加减乘除计算
PS:当浮点数转为整形时会保留整数部分,并不会四舍五入
例如:
int(4.6) # 4
py2与py3的区别:
在py2中int类型的范围为:-9223372036854775808~9223372036854775807,在超过这个范围后会转换为long型
在py3中仅有int类型,没用限制范围
地板除py2中仅会保留商,不会保留小数,py3中会保留小数
# python3
i = 9/2 # 4.5
# python2
i = 9/2 # 4
# 在python2中解决这个问题可以引入_future_
from _future_ import diviaion
i = 9/2# 4.5
整型类型会进行进制的转换
v1 = bin(25) #十进制转换为二进制
v2 = oct(23) #十进制转换为八进制
v3 = hex(24) #十进制转换为十六进制
i1 = int("0b011010",base=2)# 二进制转换位十进制
i2 = int("0o25",base = 8)# 八进制转换位十进制
i3 = int("0x1B",base = 16)# 十六进制转换位十进制
十进制可以直接转换为任意进制,任意进制也可以直接转换为10进制,但是若要转换为其他进制需要先转换为10进制,再有10进制进行转换
2.字符串(str)
汉字、英文、符号等都属于字符串,在python中定义字符串需要使用引号引起
PS:“1” 这个也是属于字符串类型,并非整型
在python中字符串引号有3中,分别为单引号、双引号、三引号
单引号与双引号都只能表示单行字符串
三引号可以表示多行字符串(使用三引号时如果并没有赋值给一个变量则会将引起来的内容进行注释)
常用方法:
1):startswith("xx"):判断字符串是否以XX开头,返回一个布尔值
2):endswith("xx"):判断字符串是否以XX结尾,返回一个布尔值
3):isdecimal():判断该字符串是否可以转换为整形,返回一个布尔值
4):strip():去除字符串两边的空格、换行符、制表符,返回新的字符串
lstrip():去除左空格、换行符、制表符,返回新的字符串
rstrip():去除右空格、换行符、制表符,返回新的字符串
5):upper():将字符串字母都变为大写字母
lower():将字符串字母都变为小写字母
6):replace(参数1,参数2):将字符串中的参数1全部替换为参数2
7):split(参数1,参数2):将字符串以参数1进行切割,参数2为切的次数(可不写),默认情况从左向右切
rspilt():表示从右往左切
data = hello-world
data_list = data.split("-") # ["hello","world"]
8):join(列表) :字符串的拼接
data_list = ["hello","world"]
data = "-".join(data_list) # "hello-world"
9):encode(编码类型):将字符串转为字节
decode(编码类型):把字节转换为字符串
10):zfill(所需长度):若字符串长度的小于所需长度,则会在字符串前面加0,长度填充到所需长度,多用于处理二进制数据
data = "111" # 需要填充到8位
data = data.zfill(8) # 00000111
11):len():求字符串的长度
字符串切片:可以根据索引从字符串中切取部分数据(左取右不取),左面不写则代表从头开始取,右面不写代表取到末尾
data = "hello"
data[:2] # he
data[1:2] # e
data[3:] # lo
data[3:-1] #l
data[::2] #hlo
可以利用切片进行字符串的反转:
data[::-1] # olleh
3.布尔值(bool)
真为True
假为False
[]、0、()、{}、”“均为False
4.列表(list)
是一个有序且无序的容器,可以在里面存放不同类型的数据
常用方法:
1):append(增加的值):在列表末尾增加数据
2):extend():将一个列表中的元素,逐步的追加到另外一个列表中
3):insert(参数1,参数2):参数1为需要插入数据的位置(索引),参数2为插入的值
4):remove():从左往右删除第一个值(若列表中没有对应删除的值会报错)
5):pop():将列表的最后一位删除
6):clear():清空列表
7):index():取元素对应的索引值
8):sort():从小到大排序(排序时会将每个元素转换为相应的Unicodde码,对其进行排序),在该方法中加入属性reverse=True则会从大到小排序
9):reverse():对列表进行反转
10):zip():将序列中对应位置的元素重新组合,生成一个个新的元组
v1 = [1,2,3,4]
v2 = [5,7,4]
v3 = [7,8,9,10]
# 会将对位抽取出来[(1,5,7),(2,7,8),(3,4,8)],后续不在获取因为位数不够
result = zip(v1,v2,v3) # 生成迭代器
for item in result:
print(item)
# (1,5,7)
# (2,7,8)
# (3,4,8)
列表可以像字符串一样进行切片,故也可以利用切片进行列表的反转data_list[::-1]
5.元组(tuple)
元组是一个有序且不可变的容器,与列表一样元组可以为各种类型的数据
PS:(1)会被认为这是一个数字,若想要让python判断为是元组需要添加,作为元组的一个标识故(1,)为一个元组,其中有一个元素为1
目前只有字符串与列表可以转换为元组
元组与列表的元素基本相同,只是元组为不可变类型
6.字典(dict)
字典是一个无序、键不重复且元素只能是键值对的可变的个容器
PS:字典的键不可以重复,重复的话会被当做赋值,会覆盖原来的值
键:必须是可哈希
值:可以为任意类型
常用方法:
1):get():获取值
info = {"age":12,"name":"hello"}
data = info.get("name")
print(data) # hello
data = info.get("phone") # 键不存在返回None
print(data) # None
data = info.get("email",123) # 键不存在返回123
print(data) # 123
2):keys():获取所有的键
3):values():获取所有的值
4):items():获取所有的键值
info = {"age":12, "name":"xx"}
data = info.items()
print(data) # 输出 dict_items([ ('age', 12), ('name', 'xx') ])
for item in info.items():
print(item[0],item[1]) # item是一个元组 (键,值)
for key,value in info.items():
print(key,value) # key代表键,value代表值,将兼职从元组中直接拆分出来了。
5):setdefult():设置值
info = {"age":12,"name":"hello"}
info.setdefault("address","xxx")
print(info) # {"age":12,"name":"hello","address":"xxx"}
info.setdefault("name","xx") # 如果增加的原键名已有,则字典不会有反应
print(info) # {"age":12,"name":"hello","address":"xxx"}
6):upsate():更新字典键值对
info = {"age":12, "status":True}
info.update( {"age":14,"name":"xxx"} ) # info中没有的键直接添加;有的键则更新值
print(info) # 输出:{"age":14, "status":True,"name":"xxx"}
7):pop():移除指定键值对,可以将移除的值赋值给一个变量
8):popitem():从右往左依次往移除
7.集合(set)
集合是一个无序、可变、不容许数据重复的容器,可以利用集合不许重复的特性进行数据的去重
PS:定义空集合必须为set{},不可以为{},这样会被认为是一个字典
存储原理:利用哈希值进行存储
因存储原理,集合的元素必须是可哈希的值
常用方法:
1):add():增加元素
2):discard():删除元素
3):& 或者intersection交集,|或union并集,-或difference差集
8.浮点数(float)
小数则为浮点数,在计算时round可以指定保留的小数位数
解决上面的问题需要使用decimal模块
import decimal
v1 = decimal.Decimal("0.1")
v2 = decimal.Decimal("0.2")
v3 = v1 + v2
print(v3) # 0.3
9.数据转换
-
其他所有类型转布尔类型时,除空字符串、0、空字符串、空元组、空字典以外其他都为True
-
字符串转整形时,只有那种“1111”格式的字符串才可以转换为整形,其他都报错
-
想要转换为那种类型,就用这类型的英文包裹一下就行。
10.数据类型的分类
可变数据类型: list/set/dict
不可变数据类型: int/bool/str/tuple
可哈希的类型:int/bool/str/tuple
不可哈希的类型:list/set/dict
是否可哈希可以用来判断数据类型是否为可变类型