Python —— 基本数据类型
Python —— 基本数据类型
int
可计算int类对象的位长度: 对象.bit_length()
>>> a=123
>>> a.bit_length()
7
float
python中的float型,等同于c语言中的double类型。
创建float值得两种方式
1、直接赋予变量。如果该数值没有小数,需补充后缀".0",否则解释器认为是int型。
2、使用构造器float()创建float实例。如果没有输入参数,创建的float实例为"0.0"。
>>> float() 0.0 >>> float(22) 22.0 >>> float(22.22) 22.22 >>> float("22.22") 22.22
>>> float("22.22a") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: could not convert string to float: '22.22a'
float类型的取整问题
包括:向下取整、向上取整、四舍五入,分别取整数部分和小数部分
# 向下取整 >>> int(22.22) 22 # 向上取整 >>> import math >>> math.ceil(22.22) 23 # 四舍五入 >>> round(22.22) 22 >>> round(22.72) 23
>>> round(22.22, 1)
22.2
>>> round(22.77, 1)
22.8
float获取整数/小数部分
>>> divmod(22.22,1) (22.0, 0.21999999999999886) >>> import math >>> math.modf(22.22) (0.21999999999999886, 22.0)
float类型的格式化问题 %f
bool
str串中,空字符串""代表False
int类中,数字0代表False
str
1)str类提供的功能
变大/小写/首字母大写 - upper()、lower()、capitalize()
>>> name="clARe" >>> name.upper() 'CLARE' >>> name.lower() 'clare' >>> >>> name.capitalize() # 首字母变大写,其余字母变小写 'Clare'
去除前后空格 / 前空格 / 后空格 - strip()、lstrip()、rstrip()
>>> name=" Clare " >>> name.strip() 'Clare' >>> name.lstrip() 'Clare ' >>> name.rstrip() ' Clare'
替换 replace()
>>> msg = "Life is short,you need python" >>> msg.replace("python", "Python") 'Life is short,you need Python' >>> msg 'Life is short,you need python' # 替换并不改变原有字符串,获取替换后的字符串需赋值给新的变量
分割 - split()、rsplit()
>>> msg = "1+2+3+4+5" # 当不传入参数时,即对字符串以所有"+"为分割进行切片,获得一个列表 >>> msg.split("+") ['1', '2', '3', '4', '5'] # 传入参数为2时,对字符串以前两个"+"进行切片,获得一个列表 >>> msg.split("+",2) ['1', '2', '3+4+5']
# 可定义变量接收切片后的元素,定义的变量个数必须与切片后的列表内的元素个数相同 >>> a , b = msg.split( "+" , 1 ) >>> a '1' >>> b '2+3+4+5' # rsplit(),注:无lsplit()方法 >>> msg.rsplit('+', 2) ['1+2+3', '4', '5']
判断当前字符串中是否都为数字 - isdecimal()
msg = "nicnjsm2234848sniwiwi" num = 0 for i in msg: if i.isdecimal(): #.isdecimal()可判断是否为整数,返回True或False num += 1 # 是整数,计数+1 print (num)
2)公共功能
计算长度
>>> msg="python" >>> len(msg) 6
通过“索引”/“下标”查找元素
索引由0开始,也可输入索引起始值:索引结束值:步长(如1:6:2,表示取索引值为1到索引值为5,步长为2的数)
>>> msg="python" >>> msg[2] 't' >>> msg[:4] 'pyth' >>> msg[1:4:2] 'yh'
for 循环
str = "python" for i in str: print (i)
int - bool - str 的转换
# int-str >>> msg="1234" >>> int(msg) 1234 >>> num=1234 >>> str(num) '1234'
# 报错 >>> msg="123a" >>> int(msg) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '123a'
int类、bool类、str类可进行转换
1 msg = "1234" 2 num = int(msg) # 将字符串"1234"转换为数字1234 3 4 num = 1234 5 msg = str(num) # 将数字1234转换为字符串"1234"
非0数、非空字符串转换为bool类型为True,数字0、空字符串转换为bool类型为Fase
list
list类的功能修改自身值
1)list类提供的功能
1、在列表尾部追加一个值 list.append()
2、在指定位置插入一个值 list.insert(索引号,值)
3、将列表中全部元素反转 list.reverse()
2)公共功能
1、计算列表长度 length = len(list)
2、索引 list[0] list[1:6:2]
3、可通过for循环打印列表中的元素
4、替换 list[1] = "a"
5、删除 del list[2]
6、列表中的元素可以是数字、字符串、列表、以及元组、字典等。。。 list = [ 11, "Calre" , [1,2] , (1,2) , {"k1":"v1"} ]
排序:
sort与sorted()
list.sort()方法会按照升序将列表重新排列,不会保留原列表。
而sorted()会返回副本,原始输入不变。
>>> a=[9,8,7,6,5,4,3,2,1] >>> a.sort() >>> a >>> [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> >>> b=[9,8,7,6,5,4,3,2,1] >>> c=sorted(b) >>> b [9,8,7,6,5,4,3,2,1] >>> c [1, 2, 3, 4, 5, 6, 7, 8, 9]
tuple
1)tuple类提供的功能
无
2)公共功能
1、计算元组长度 length = len(tuple)
2、索引 tuple[0] tuple[1:6:2]
3、可通过for循环打印元组中的元素
4、元组中的元素可以是数字、字符串、列表、以及元组、字典等。。。 tuple = ( 11, "Calre" , [1,2] , (1,2) , {"k1":"v1"} )
5、对于元组中的元素来说,如果元素是可变的列表、字符串等值,则该列表/字符串中的值可变
1 tuple = ( 11, "Calre" , [1,2] , (1,2) , {"k1":"v1"} ) 2 tuple[1].replace("l","L") # 将元组中索引为1的值:字符串中的“l”修改为“L” 3 tuple[2][1] = 3 # 将元组中索引为2的值:列表中索引为1的值修改为3
dic
dic类中一个键值对为一个元素,键值对由键key和值value构成,值可以是数字、字符串、列表、以及元组、字典等。。。
字典是无序的。
1)dict类提供的功能
1、可通过键获取相应的值 value = dict.get("k1")
2)公共功能
1、获取字典长度,即获取共有多少个键值对。 num = len(dict)
2、通过索引获取值。 value = dict[ "k1"]
注:因字典是无序的,不能通过索引值来获取值,只能通过键来获取值
3、修改键对应的值:
1 dict = { "k1":"v1" , "k2":"v2"} 2 dict["k1"] = 3 3 print(dict)
注:如输入的键名字典中存在,则修改键对应的值;若字典中不存在,则在字典中添加一个键值对
4、删除键值对 del dict["k1‘’]
5、for循环打印字典
1 dict = { "k1":"v1" , "k2":"v2" } 2 for i in dict: # 获取dict中的所有键,同for i in dict.keys(): 3 print(i) 4 5 for i in dict.values(); # 获取dict中的所有值 6 print(i)
set
集合创建
# 空集合 s = set() # 非空集合 s = set((1,2,3)) s = {1,2,3} s = set('123455') --> s={'2', '3', '1', '4', '5'} # 集合推导式 s = {i for i in [1,2,3] if i != 0 }
集合元素顺序
集合是无序的,打印顺序:
a = set((8, 2, 3, 4, 5)) b = set((-1, 2, 3, 4, 5)) # a:{2, 3, 4, 5, 8} # b:{2, 3, 4, 5, -1}
集合间运算
# 去重 a = {1, 2, 3, 4, 5, 5, 5, 5} print(a) # {1, 2, 3, 4, 5} # 是否在集合内 2 in a # True '2' in a # False
a = set((1, 2, 3, 4, 5)) b = set((1, 2, 3, 4, 6)) print(a - b) # 集合a相对于集合b的差集,即集合a包含集合b不包含的元素。{5} print(a | b) # 集合a集合b的并集:{1, 2, 3, 4, 5, 6} print(a & b) # 集合a集合b的交集:{1, 2, 3, 4} print(a ^ b) # 不同时包含于集合a集合b的元素:{5, 6}
集合基本操作
添加 add / update
# 添加元素 s = set() s.add(1) # 批量添加 s.update(x): x参数可以是列表,元组,字典等,支持多个逗号分隔 x = [2, 3] y = (4, 5) z = {6: 'a', 7: 'b'} s.update(x) s.update(y) s.update(z) s.update(z.items()) s.update(z.values()) s.update(['A', 'B'], ['C', 'D']) print(s) # {1, 2, 3, 4, 5, 6, 7, 'B', 'a', (7, 'b'), 'b', 'C', 'A', 'D', (6, 'a')}
移除 remove / discard
1、差集
.difference()
1 name = { "Clare","Bob","Amy" }
2 stud = { "Amy","Alex" }
3 data = name.difference(stud) # 求name中存在,stud中不存在的数据
4 print(data) # 运行结果:{'Clare','Bob'}
5 data = stud.difference(name) # 求stud中存在,name中不存在的数据
6 print(data) # 运行结果:{'Alex'}
.diference_update()
1 name = { "Clare","Bob","Amy" }
2 stud = { "Amy","Alex" }
3 name.difference_update(stud) # 求name中存在,stud中不存在的数据,并赋值给name
4 print(name) # 运行结果:{'Clare','Bob'}
# 前后独立
5 # stud.difference_update(name) # 求stud中存在,name中不存在的数据,并赋值给stud
6 # print(stud) # 运行结果:{'Alex'}
2、对称差集
1 name = { "Clare","Bob","Amy" }
2 stud = { "Amy","Alex" }
3 val = name.symmetric_difference(stud) # name中存在stud中不存在的数据 和 stud中存在name中不存在的数据的集合,并赋值给val
4 print(val) # 运行结果:{'Clare','Bob','Alex'}
5
6 name.symmetric_difference_update(stud) # 赋值给name
7 print(name) # 运行结果:{'Clare','Bob','Alex'}
3、交集、
4、并集
5、在集合中删除指定值
1 name = { "Clare","Bob","Amy" }
2 name.discard("Clare")
3 print(name)