python数据类型(二)字典与集合
python使用对象模型来存储数据,每个数据类型都有一个内置类,每新建一个数据就是在初始化生成一个对象,既所有数据都是对象
三个特性:
1.身份:内存地址,用id()获取查看
2.类型:决定了该对象可以保存什么类型值,可执行哪种操作,要遵循什么规则,用type()获取
3.值:对象保存的真实数据
标准类型:数字、字符串、列表、元组、字典
其他类型:类型type、Null、文件、集合、函数(方法)、类、模块
数字:定义 n=1
分为:整型、长整型、浮点、复数
特性:
1.只能存放一个值
2.定以后不可更改
3.直接访问
print(bin(10)) -> 0b1010 (bin函数用来转换成二进制)
print(oct(10)) -> 0o12(oct函数用来装换成八进制)
print(hex(10)) -> 0xa (hex函数用来装换成十六进制)
python3 整型长度没有限制
python2 32位 取值范围-2**31~2**31-1(-2147483648~2147483647)
64位 取值范围-2**63~2**63-1(-9223372036854775808~9223372036854775807)
长整型(long):
python3中统一为整型
python2中Python的长整型没有指定位宽,也就是说Python没有限制长整型数值的大小,
但是实际上由于机器内存有限,所以我们使用的长整型数值不可能无限大。区分时通常的做法是在数字尾部加上一个大写字母L或小写字母l以表示该整数是长整型的,例如:
a = 928L,注意,自从Python2起,如果发生溢出,Python会自动将整型数据转换为长整型,
所以如今在长整型数据后面不加字母L也不会导致严重后果了。
浮点数(float):
Python的浮点数就是数学中的小数,类似C语言中的double。
浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,
就必须用科学计数法表示,把10用e替代,1.23*109就是1.23e9,或者12.3e8,0.000012
可以写成1.2e-5,1.3e3=1300
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有
四舍五入的误差。
布尔(bool):
只有真或者假两种状态:True False ( 1 0)
复数(complex):
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注意,虚数部分的字母j大小写都可以,
>>> 1.7 + 3.2j == 1.7 + 3.2J
True
字符串:
用引号包起来的字符集合
特性:
1.只能存放一个值
2.不能改变
3.从左到右顺序,下标从0开始
字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l\thf'
unicode字符串与r连用必需在r前面,如name=ur'l\thf'
字符串操作:
a=‘hello’ 其实就是 a =str('hello')
索引:print(a[0]) 取到h 反之 print(a[-1]) 取到o 注:超范围报错
切片: print(a[1:3]) 取到el print(a[1:5:2])以步长2进行切 取到el
str.strip(): 去除字符串str左右两边的字符,默认是空格
str.capitalize(): 将字符串str中首字母大写
str.upper() : 将str中所有字母大写
str.lower() : 将str中所有字母小写
str.isupper(): 判断str内容是不是全部大写
str.islower(): 判断str内容是不是全部小写
str.isspace(): 判断str内容是不是全部都是空格
str.istitle(): 判断str内容是不是首字母大写
str.title(): 将首字母变大写
str.ljust(): 列:a.ljust(20,'*') 左对齐一共20位,空位置用*号填上
str.rjust() : a.ljust(20,'*') 右对齐一共20位,空位置用*号填上
str.swapcase(): 将内容大小写翻转
str.center() : str.center(20,*) 居中显示,左右两边填*,整体长度共20位
str.conut() : 统计字符串中某个字符出现的次数 列:a = "hello" a.count(‘l’) 输出2
a.count('l',0,3) 从h开始到第三位l, 只有一个l,输出1
str.endswith() : 以什么为结尾,必须有参数 a.endswith('a')看字符串a是不是 以a为结尾,返回False,反之为True
str.startswith(): 以什么开头 ,同上
str.find(): 查找 a.find('a')找字符串a中有没有a,返回负数,失败;a.find('e') 返回 1 ,找到的是 e 在 hello 中的索引位置;有两个相同字符的情况下,找到第一个就停止
str.format(): 格式化字符串 列: 1. s='name:{},age:{},sex:{}'
print(s.format('shuai',23','man'))
2. s='name:{0},age:{1},sex:{0}'
print(s.format('qwe','rty'))
3. s='name:{a},age:{b},sex:{c}'
print(s.format(a='qwe',b='rty',c='fh'))
str.index(): 查看字符索引 a.index('o')取到4
str.isdigit(): x='123' x.isdigit() 判断x内容是不是数字 是的话返回True,反之False
str.replace(): 替换 x.replace('1','8') 将1替换成8; 若有多个1,那么都会替换成8
x.replace('1','8',1) 值替换第一个1变为8
str.split() : x=('hello shuai')
print(x.split()) ----> 输出为['hello','shuai']
括号里可以指定字符来切分
len(str) : 字符串长度(有多少字符)

浙公网安备 33010602011771号