Python的数据类型
一、数字
1.整数:python2中区分整型(int)和长整型(long),python3不区分
2.整数的进制表示:
2.1 二进制:以0b开头,只包含0或1;
二进制的进制转换函数:bin()
bin():任意进制的数转换成二进制,接受一个int,返回一个str;
2.2 八进制:以0o开头,只包含0-7;
八进制的进制转换函数:oct()
oct():接受一个int,返回一个str;
2.3 十六进制:以0x开头,包含0-9,A-F;
十六进制的进制转换函数:hex();
hex():接受一个int,返回一个str;
2.4 将其他类型转换成十进制:int()
int():接收一个int/str,转换成int类型
3.浮点型(float类型):在python中是不精确的
4.Decimal使用方法
>>> from decimal import Decimal
>>> mydec = Decimal.from_float(12.22)
>>> mydec
Decimal('12.2200000000000006394884621840901672840118408203125')
>>> mydec = Decimal('12.22')
>>> mydec
Decimal('12.22')
>>>
5.复数:a+bi
>>> a = 4+5j
>>> type(a)
<class 'complex'>
>>> dir(a)
['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', 'conjugate', 'imag', 'real']
>>> a.real
4.0
>>> a.imag
5.0
二、字符串
1.字符串前面加上r表示: 不转义,作为原始字符串输出
>>> a = 'sanchuang tongle,\n huanying nin'
>>> print(a)
sanchuang tongle,
huanying nin
>>> a = r'sanchuang tongle,\n huanying nin'
>>> print(a)
sanchuang tongle,\n huanying nin
2.字符串的切片取值
2.1 通过下标去切片,step默认为1:str1[start:end:step]
str1 = 'abcdefghijklmn'
print(str1[3:7:2])
print(str1[3:])
print(str1[:7])
结果
df
defghijklmn
abcdefg
2.2 如果step为正,表示从左往右截取,如果step为负,表示从右往左截取
确认start和end的位置
确认step的步长是多少
2.3 如果把两个字符串相邻放着,他们会被python自动级连:
a='cali','18'
print(a)
结果:
('cali', '18')
3.字符串的常用方法
3.1#判断系列类
>>> str1 = '1234567'
>>> str2 = '123一二三'
>>> str3 = "abc 123"
>>> str4 = "Hello Sanchang"
3.1.1 #判断是否全为数字
>>> str1.isdigit()
True
3.1.2 #判断是否全为数字,一二三也可以
>>> str1.isnumeric()
True
>>> str2.isnumeric()
True
>>> str3.isnumeric()
False
3.1.3 #是否为大写字母开头
>>> str3.istitle()
False
>>> str4.istitle()
True
3.1.4 #是否全为小写,中间允许有空格
>>> 'abc efg'.islower()
True
3.1.5 #是否由字母和数字组成,不允许由空格
>>> str3.isalnum()
False
3.1.6 #判断以什么开头,
>>> "abcabc xxxyy".startswith("a")
True
>>> "abcabc xxxyy".startswith("abc")
True
3.1.7 #判断以什么结尾
>>> "abcabc xxxyy".endswith("yy")
True
3.2查找统计类
3.2.1 #统计长度
>>> len(str1)
7
3.2.2 #统计字符出现的次数
>>> "abcabcdeqaa".count("a")
4
3.2.3#统计字符第一次出现下标,若是没有则会返回-1
>>> "abcabcdeqaa".find("aa")
9
>>> "abcabcdeqaa".find("aaa")
-1
3.3转换类
msg = ‘i Am ok’
3.3.1 #upper 大写
print(msg.upper())
结果:
I AM OK
3.3.2 #lower 小写
print(msg.lower())
结果:
i am ok
3.3.3#首字母大写
print(msg.title())
结果:
I Am Ok
3.3.4 #大小写互换
print(msg.swapcase())
结果:
I aM OK
3.3.5 #切割
msg = 'root:x:0:0:root:/root:/bin/bash'
msg_lst = msg.split(":")
print(msg_lst)
结果:
['root', 'x', '0', '0', 'root', '/root', '/bin/bash']
3.3.6 #拼接
msg1="#".join(msg_lsg)
print(msg1)
结果:
root#x#0#0#root#/root#/bin/bash
3.3.7 #替换字符
msg = 'ab**5%ef'
msg_lst = msg.replace("*",'#')
print(msg_lst.replace('%','#'))
结果:
ab##5#ef
3.3.8 #去除首尾字符(默认是空白字符)
msg2 = " # abc #sanchuang # "
print(msg2.strip())
print(msg2.strip('#'))
结果:
# abc #sanchuang #
abc #sanchuang
3.3.9 #填充(居中对齐,左对齐,右对齐)
ms3 = '欢迎光临'
print(ms3.center(50,'*'))
print(ms3.ljust(50,'*'))
print(ms3.rjust(50,'*'))
结果:
***********************欢迎光临***********************
欢迎光临**********************************************
**********************************************欢迎光临
三、字符串的拼接
1、 加号拼接
str1 = 'i' + 'am' + 'lilei'
str2 = 'beatfullan ' * 3
print(str1)
print(str2)
str3 = ''.join(['i ','am ','lilei'])
print(str3)
2、字符串格式化
2.1 使用%占位符来进行格式化:
%s 表示字符串,%d 表示整型十进制,%f 表示浮点数,%x 表示十六进制,%o 表示八进制,%% 表示%本身
name = 'wen'
age = 18
print('i am %s , my age is %s'%(name,age))
print('i am %s , my age is %o'%(name,age))
2.2 基本格式:% [(name)] [flags] [width].[precision]typecode
2.2.1 - (name):命名
2.2.2 - flags: +,-,’ ‘或0。+表示正数前面填充‘+’号;-表示左对齐;’ '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐,0表示使用0填充。
2.2.3 - width表示显示宽度
2.2.4 - precision表示小数点后精度
print('第二格格式化:%-11x'% 10)
print('第三个格式化:% x'% 10)
2.2.5 flags标志位为 + 或者 空格 只对正数有用,表示和负数对齐,对字符串形式是没有用的
print('第四个格式化:%010.3f'%2.4352341)
print('第五个格式化:%.4f'% 4.546456)
2.3 字符串格式化(format):{变量: [填充字符][对齐方式 < ^ >][宽度][格式]}
name = 'wen'
age = 18
print('format01 --> 姓名:{}, 年龄:{}'.format(name,age))
print('format02 --> 姓名:{1}, 年龄:{0}'.format(name,age))
print('format03 --> 姓名:{x}, 年龄:{y}'.format(x=name,y=age))
print('format04 --> {0:*>8}'.format(10,20))
2.4 精度与进制
print('format --> {1:*>15.2f}'.format(1/3,6.333333333))
print('format06 --> {0:x}'.format(10))
2.5 千分位格式化:
print(‘format07 -->{0:,}’.format(123456789))
2.6 f 标志位格式化,python3才有
name = 'wen'
age = 18
print(f"my name is {name:a^10},my age is {age}")
四、布尔类型(!!python3里面,True和False都是关键字)
1.Ture --> 1,False --> 0
result = (3>4) + 1 + (5>4)
print(result)