python基础2--数据类型
一、数字
数字类型包含整型、浮点型,还包含不太常用的长整型、复数。
二、 布尔型(bool)
True
False
v1 = bool("hello")
v2 = bool("")
print(v1,v2)
转布尔型False: None 0 "" [] {} () set{}
三、字符串
定义:在单引号\双引号\三引号内,由一串字符组成
msg='hello world'
1、索引步长切片
- 索引 左从0 开始,右从-1开始
- 切片 左包含右不包含
- 步长 步长为负数从右向左取值
msg='hello world'
print(msg[1:8]) #从下标为1的字符开始取,顾头不顾尾,所以得到ello wo,空格也是一个字符
print(msg[1:8:2]) #从下标为1的字符开始取,顾头不顾尾,步长为2,取一个跳过一个,得到el o
print(msg[0]) #取出下标为0的字符、就是第一个字符,得到h
print(msg[-1]) #取出最后一个字符,得到d
print(msg[::-1]) #逆序
print msg * 2 # 输出字符串两次
print msg + "TEST" # 输出连接的字符串
2、转义字符
在需要在字符中使用特殊字符时,python用反斜杠\
转义字符。如下表:
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
取消转义的两种方式:
- 字符串前加r
msg=r“\n hello”
- 反斜杠前再加一个反斜杠
msg="\\n hello"
3、成员运算
成员运算in和not in,看所取得字符是否在变量定义的字符串里
msg="hello world"
print("hello" in msg)
4、常用内置方法
- strip
name='*hello*'
print(name.strip('*')) #去掉hello两边的*
print(name.lstrip('*')) #去掉hello左边的*
print(name.rstrip('*')) #去掉hello右边的*
#和用户交互常用的情况如下
name=input('user: ').strip() #对用户输入的字符串去掉两边的空格
print(name)
- split
info='root:x:0:0::/root:/bin/bash'
res=info.split(':') #以冒号为分隔符对字符串进行分割,分割后会变成列表的形式
res1=info.split(':',1) #以冒号为分隔符对字符串进行分割,并指定分割最大次数为1
res2=info.rsplit(':',1) #从右进行切分,切分一次,结果是按照最后的冒号把字符串切为两部分
print(res) #['root', 'x', '0', '0', '', '/root', '/bin/bash']
print(res1) #['root', 'x:0:0::/root:/bin/bash']
print(res2) #['root:x:0:0::/root', '/bin/bash']
- join
l=['root', 'x', '0', '0']
res=':'.join(l) #把列表l里的元素通过冒号合并成一个字符串, 列表l里的元素必须全是字符串,否则报错
print(res)
- replace
msg='tom say my name is tom'
msg=msg.replace('tom','happier',1) #用tom替换happier,并且只替换一个
print(msg) # happier say my name is tom
- startswith,endswith
msg='happier is boy'
print(msg.startswith('happier')) #开头的是否是happier,返回True或者False,所以返回True
print(msg.endswith('boy')) #末尾的是否是boy,所以返回True
- lower,upper
print('AbcD'.lower()) #把字符串全部显示成小写,结果是abcd
print('aaa'.upper()) #把字符串全部显示成大写,结果是AAA
- isdigit,isdecimal,isnumeric
isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节)
False: 汉字数字,罗马数字, 小数
Error: 无
isdecimal()
True: Unicode数字,全角数字(双字节)
False: 罗马数字,汉字数字, 小数
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 小数
Error: byte数字(单字节)
- encode
以 encoding 指定的编码格式解码 string
a='你好'
print(a.encode('gbk'))
# b'\xc4\xe3\xba\xc3'
- format
s="你好{}".format("世界")
print(s)
5、字符串格式化
四、列表
定义:[]内可以有多个任意类型的值,逗号分隔
name=['zhao','qian','sun','li']
1、常用方法
- 方法append和extend,insert
name.append('ni') #列表里添加元素ni
l=['song','zhang']
name.extend(l) #列表里添加多个元素
print(name)
name.insert(1,'wang') #插入元素wang,下标为1
- remove和pop
name.remove('li') #删除元素li,但是拿不到取走的元素
print(name)
name.pop() #删除并拿到结果,取走一个值
- reverse
name.reverse() #将列表name元素倒向显示,结果为['li', 'sun', 'qian', 'zhao']
- sort排序
l=[1,10,4,11,2,]
l.sort() #对列表里的元素排序
print(l)
l.sort(reverse=True) #对列表里的元素倒向排序
print(l)
- count
print(name.count('li')) #统计元素li出现在列表里几次
- index
print(name.index('zhao')) #显示元素zhao对应的下标
- clear
name.clear() #清空列表
五、元组
与列表类型比,只不过[]换成(),存多个值,对比列表来说,元组不可变,主要是用来读
1、常用方法
- index
- count
六、字典
定义:key必须是不可变类型(int,float,str,tuple),value可以是任意类型,无序
1、常用方法
- keys,values,items
info={'name':'yhp','age':99}
for i,k in info.items():
print(i,k)
# 当循环字典时,默认循环的是key
- get
info={'name':'yhp','age':99}
msg= info.get('na',"不存在")
print(msg)
#获取不到不报错
- pop
name=infos.pop("name")
- update
info={'name':'yhp','age':99}
msg= {'name':'happier','addres':"China"}
info.update(msg)
print(info)
# {'name': 'happier', 'age': 99, 'addres': 'China'}
2、有序字典
from collections import OrderedDict
info = OrderedDict()
info['k2'] = 123
info['k1'] = 456
3、快速创建字典
info={}.fromkeys(['name','age','sex'],None) #快速创建字典,前面列表的每个元素会和none组成字典的一个元素
七、集合
1、定义和原则
空集合定义:a=set()
集合:可以包含多个元素,用逗号分割
集合的元素遵循三个原则:
- 每个元素必须是不可变类型(可hash,可作为字典的key)
- 没有重复的元素
- 无序
2、常用方法
-
add 添加元素
-
update 批量更新
-
discard 删除元素
-
intersection 交集,等同于(&)
-
union 并集,等同于(|)
-
difference 差集,等同于(-)
-
symmetric_difference 取对等差分集合,返回两个集合中不重复的元素集合