python数据类型
-
数值类型
1.1 整型int
- 类型转换:
int("10")
- 10进制转为二进制:
bin()
- 10进制转为八进制:
oct()
- 10进制转为16进制:
hex()
- 二进制转为10进制:
int("0b1011",2)
- 八进制转为10进制:
int("0o13",8)
- 16进制转为10进制:
int('0xb',16)
1.2 浮点型
float
:使用同int
- 类型转换:
-
字符串类型
2.1 用引号('',"",''' ''',""" """,)包含的一串字符
2.2 类型str
2.3 类型转换:str(xxx)
,可以将任意类型转为字符串
2.4 内置方法:-
按索引取值(正向取+反向取) :只能取
msg='hello world' # 正向取 print(msg[0]) print(msg[5]) # 反向取 print(msg[-1])
-
切片
[start:end:step]
:索引的拓展应用,从一个大字符串中拷贝出一个子字符串msg='hello world' # 步长 print(msg[0:5:2]) # hlo # 反向步长 print(msg[5:0:-2]) # " le"
-
默认切片:
[:]、[::-1](字符串倒序)
-
长度:
len()
-
成员运算
in
和not in
-
移除字符串左右两侧的符号:
strip()
,产生新值- 默认
str.strip()
是去掉左右空格 str.strip("*")
去掉左右*
,以此类推lstrip()
:去掉左侧空格rstrip()
:去掉右边空格
- 默认
-
切分:
split(xxx,分割次数)
按照分隔符xxx
切分成列表,默认是空格rsplit()
:从右开始分割
-
lower()
:大写转小写 -
upper()
:小写转大写 -
startswith()
:以xxx开头 -
endswith()
:以xxx结尾 -
format()
:字符串格式化 -
join()
:xx.join(list)
,将列表list
以分隔符xx
连接到一起 -
replace(目标元素,替换元素,[次数])
:替换 -
str.isdigit()
:判断str
是否由纯数字组成print('123'.isdigit()) # True print('12444.3'.isdigit()) # False
-
find()
:返回起始索引,找不到返回-1rfind()
:从右开始查找
-
index()
:返回起始索引,找不到抛出异常rindex()
:从右开始查找
-
count(xxx)
:返回xxx
出现的个数 -
对齐方式
str.center(位数,填充参数)
:居中对齐,填充str.ljust(位数,填充参数)
:左对齐,其余填充str.rjust(位数,填充参数)
:右对齐,其余填充str.zfill(位数)
:右对齐,填充0
-
str.expandtabs(空格数)
:设置制表符代表的空格数msg='hello\tworld' print(msg.expandtabs(12)) # 设置制表符代表的空格数为12
-
str.capitalize()
:首字母大写 -
str.swapcase()
:大小写字母切换 -
str.title()
:每个单词首字母大写 -
str.isXXX()
:print('abc'.islower()) print('ABC'.isupper()) print('Hello World'.istitle()) print('123123aadsf'.isalnum()) # 字符串由字母或数字组成结果为True print('ad'.isalpha()) # 字符串由由字母组成结果为True print(' '.isspace()) # 字符串由空格组成结果为True print('print'.isidentifier()) print('age_of_egon'.isidentifier()) print('1age_of_egon'.isidentifier()) # 字符是否有效 num1=b'4' #bytes num2=u'4' #unicode,python3中无需加u就是unicode num3='四' #中文数字 num4='Ⅳ' #罗马数字 # isdigit只能识别:num1、num2 # print(num1.isdigit()) # True # print(num2.isdigit()) # True # print(num3.isdigit()) # False # print(num4.isdigit()) # False # isnumberic可以识别:num2、num3、num4 # print(num2.isnumeric()) # True # print(num3.isnumeric()) # True # print(num4.isnumeric()) # True # isdecimal只能识别:num2 # print(num2.isdecimal()) # True # print(num3.isdecimal()) # False # print(num4.isdecimal()) # False
-
-
列表类型
3.1 索引对应值,[]中以逗号隔开任意类型的值,每一个值称为一个元素
3.2 索引反映的是顺序、位置,对值没有描述性的功能nams_list = ['hyf','asd','sdfass',3,{"name":"bbb"}]
3.3 类型转换: 但凡能够被for循环遍历的类型都可以当做参数传给list()转成列表
3.4 内置方法;- 按索引存取值(正向存取+反向存取):即可以取也可以改,索引不存在则报错
- 切片(顾头不顾尾,步长):
list[start:end:step]
切片等同于拷贝行为,而且相当于浅copy len(list)
:返回列表长度in
、not in
:成员运算符- 添加值:
list.append()
:追加list.insert(位置,值)
:插入list2.extend(list1)
:将list1
做了一层扁平化,然后追加到list2
列表中
- 删除:
del list[0]
:只是删除没有返回值list.pop([index])
:默认删除最后一个,可以通过传入的下标删除,超出报错list.remove(目标元素)
:根据元素删除,返回None
list.count(目标元素)
:返回目标元素的个数list.index(目标元素)
:返回目标元素的下标,没找到报错list.clear()
:返回一个空列表list.reverse()
:列表倒序list.sort([reverse=True])
:默认从小到大排序,reverse=True
时从大到小排序
-
元组:一个不可变的列表
-
作用:按照索引/位置存放多个值,只用于读不用于改
-
定义:
(value1,value2,....)
小括号内用逗号隔开,单独一个括号代表包含的意思,如果元组中只有一个元素,必须加逗号 -
类型转换:
tuple()
print(tuple('hello')) # ('h', 'e', 'l', 'l', 'o') print(tuple([1,2,3])) # (1, 2, 3) print(tuple({'a1':111,'a2':333})) # ('a1', 'a2')
-
内置方法:
- 按索引取值(正向取+反向取):只能取
- 切片(顾头不顾尾,步长)
len()
in、not in
:成员运算index()
:查找元素下标count()
:获取目标元素在元组中的个数
-
-
字典类型
- 键值对,key对值有描述性的功能
{key:value,...}
key必须是不可变类型- 定义:
-
d = {'k1'=11,'k2'=33}
-
d = dict(x=1,y=2,z=3)
-
d = dict([["name",'hyf'],["age",22]])
-
快速初始化
keys = ['name','age','gender'] d = {}.fromkeys(keys,None)
-
- 内置方法:
-
按key存取值:可存可取
-
len(dict)
:长度 -
成员运算
in和not in
:根据key -
删除:
del dict[key]
dict.pop(key)
dict.popitem()
:随机删除,返回元组(删除的key,删除的value)
-
dict.keys()
:在python3中返回的是dict_keys
,需要使用for循环取值d = {"k1":22,"k2":44} my_dict_list = d.keys() # dict_keys(['k1', 'k2']) for k in my_dict_list: print(k) # k1,k2 # 可以使用 list函数将dict_keys转化为列表 my_dict_list2 = list(d.keys()) # ['k1', 'k2']
-
dict.values()
:获取value值dict_values
,同上 -
dict.items()
:获取键值对,同上 -
dict.clear()
:清空 -
dict.update()
:更新字典, -
dict.get(key)
:取值,key
不存在时返回None
-
dict.setdefault(key)
:如果key
存在则不添加,否则添加。返回字典中key
对应的值info_dict = {"k1":22} info_dict.setdefault("k1",555) print(info_dict) # {"k1":22} 因为k1存在 info_dict.setdefault("k2",555) print(info_dict) # {"k1":22,"k2":555} 因为k2不存在
-
-
布尔类型:真假状态
True
和False
-
集合
-
作用:
- 关系运算
- 去重
- 只能针对不可变类型
- 无法保证原有顺序
-
定义:在
{key1,key2}
中用逗号隔开多个元素,# 1. 集合内元素必须为不可变类型 # 2. 集合内元素无序 # 3. 集合内元素没有重复 s = {1,2,1} # s = set({1,2,1}) print(s,type(s)) # {1, 2} <class 'set'> # s = {1,[2,3]} # 报错 # s = {1,'a','z','b',4,7} # print(s,type(s)) # {1, 'z', 4, 7, 'a', 'b'} <class 'set'> # 默认是空字典 # s={} # 空集合 # s = set() # print(s,type(s))-->set() <class 'set'>
-
类型转换:
set(可迭代类型)
print(set('hello world')) # {'r', 'o', 'e', 'w', 'd', 'l', ' ', 'h'} print(set({'key1':2,"key2":3})) # {'key2', 'key1'} print(set([1,1,1,1,1,1])) # {1}
-
内置方法
-
取交集:两者共同部分
-
取并集:两者全部
-
取差集:某一方独有
-
对称差集:两方独有
-
父子集:包含关系
set1 = {"zero","kevin","jason","egon"} set2 = {"Jy","ricky","jason","egon"} # 交集 res_1 = set1 & set2 res_2 = set1.intersection(set2) print(res_1) # {'egon', 'jason'} {'egon', 'jason'} # 并集 res_3 = set1|set2 res_4 = set1.union(set2) print(res_4) # {'zero', 'egon', 'kevin', 'ricky', 'Jy', 'jason'} # 取差集 res_5 = set1 - set2 # 取set1独有 res_6 = set2 - set1 # 取set2独有 res_7 = set1.difference(set2) # 取set1独有 res_7 = set2.difference(set1) # 取set2独有 # 对称差集 res_8 = set1 ^ set2 res_9 = set1.symmetric_difference(set2) # 父子集:issuperset 大于,issubset小于 set3 = {1,2,3} set4 = {1,2} set5 = {1,2,4} res_10 = set3 > set4 res_11 = set3 > set5 res_12 = set5 > set4 print(res_10,res_11,res_12) # True false True
-
set.discard(目标元素)
:删除目标元素,不存在时do nothing -
set.pop()
:删除最后一个,可以理解为随机删除 -
set.remove(目标元素)
:删除目标元素,不存在时报错 -
set.update(set1)
:更新元集合数据 -
set.add()
:添加 -
set.isdisjoint(set1)
:两个集合是否完全独立
-
-