python的数据类型
python的数据类型:
- 字符型
- 整数
- 浮点数(float)
- 布尔型
- 列表
- 字典
- 元组
字符型
特性
- 字符串类型是不可变的
举例:
a = 'hello'
a = 'wolrd'
虽然a的值变了,但是a = 'wolrd‘相当于在内存又开辟了一块空间,以前的空间并没有被覆盖,而是会被系统自动回收掉。
用法
- 全部变大写
a.swapcase()
- 第一个字母大写,其他小写
s.capitalize()
- 全部变小写
s.casefold()
- 以变量值为中心,如果长度不足指定长度,则以变量值为中心两边补充指定字符
s.center(50,‘*’)
'*******************hello world********************'
- 统计字母个数
s.count('o')
s.count('o',0,5) #统计从第0个位置到第5个位置中o的个数
- 统计是否以指定字符结尾
s.endswith('!')
- 扩展tab键的长度
s.expandtabs()
- 查找一个值并返回索引,如果找不到该值则返回负数
s.find('o')
-1
- 字符串格式化输出,把指定值赋值到指定的位置
s3 = 'my name is {0},i am {1} years old'
s3.format('Alex',22)
'my name is Alex,i am 22 years old'
s4 = 'my name is {name},i am {age} years old'
s4.format(name='alex',age=22)
'my name is Alex,i am 22 years old'
- 检测是否为小写,返回布尔型结果
s.islower()
- 全部转换为小写
s.lower()
- 全部转换为大写
s.upper()
- 字符替换
s = 'hello world'
s.replace('o','-')
'\n hell- w-rld '
s.replace('o','-',1) #只替换第一个
'\n hell- world '
- 从右边开始寻找某字符串,打印出其位置
s = 'hello world'
s.rfind('o') #find表示从左边开始寻找
7
- 分割字符为列表
s = 'hello world' #默认是以空格分割
s.split()
['hello', 'world']
s.split('o') #表示以o为分隔符分割
['hell', ' w', 'rld']
s.rsplit('o') #从右边开始分割
['hell', ' w', 'rld']
s.rsplit('o',1) #从右边开始分割,只分割1次
['hello w', 'rld']
s = 'a\nb\nalex\nc'
s.splitlines() #表示以换行符分割,\n为换行符
['a', 'b', 'alex', 'c']
- 判断是否以指定字符开始
s = 'hello world'
s.startswith('he')
True
- 判断是否以指定字符结束
s = 'hello world'
s.endswith('lo')
False
- 以指定字符连接指定变量元素
str = '*'
seq = 'hello'
str.join(seq)
'h*e*l*l*o'
- 移除变量首尾指定字符
s = '000hello wolrd000'
s.strip('0')
'hello world'
- 把字符串变成指定长度,不足用0补齐
s.zfill(30)
'0000000000000000000hello world'
列表
用法
- 定义列表
names = ['kobe','jordan','paul']
#定义空列表方法:
a = list()
a = []
- 显示列表
print(names)
print(names[0]
- 显示最后一位
print(names[-1])
- 根据值查找索引位置
names.index('jordan')
1
- 统计列表中某值的个数
n1 = [1,1,2,3,2,5,6,6,7,9,6,5]
n1.count(6)
3
- 列表切片,注意:切片原则为顾头不顾尾,而且切片只能从左往右进行
n1[0:3] #取从0到2的值
n1[2::5] #取从2到4的值
n1[-5:-1] #取从-5到-1的值
n1[-5:] #取从-5到开头的值
n1[:] #列出所有元素
n1[:7:2] #从开头取到7,2表示步进长度,每隔2位去一个值
- 追加
names.append('iversion')
- 指定位置插入
names,insert(0,'pippen')
- 修改指定索引位置的值
names[2] = 'james'
- 连续修改
n1 = [1,1,1,1,1,1]
n1[1:3] = 'jack'
print(n1)
[1, 'j', 'a', 'c', 'k', 1, 1, 1]
- 删除
names.pop() #删除最后一个
- 删除指定元素
names.remove('jordan') #如果有多个此元素,则只删除第一个
- 删除指定位置的元素,del为全局性删除
del names[2]
- 列表循环排序
for i in names:
print(i)
------------------------------------
for i in range(10) #range(10)表示生成从0到10的列表
print(i)
- 列表元素的排序
n1.sort() #升序排序
n1.reverse() #翻转排序
- 把一个列表的值扩展到另一个列表
n1.extend(names) #把names扩展到n1列表中
- 清空列表
n1.clear()
- 拷贝列表
n1 = names.copy() #拷贝names列表内容到n1
注意:
对一个变量赋值为列表值的时候,变量指向的不是列表的值,而是列表本身; 列表修改之后,变量值也会修改;如果希望变量值不被影响,需要使用copy函数;
元组
元组和列表的区别
- 元组有序不可变
- 列表有序可变
- 元组内的值以小括号包含
- 元组也可以切片
- 元组内的列表可以修改
元组的用途
- 显式告诉别人此值不可修改
- 配置信息的编写
用法
- 定义元组
names = ('alex','jack')
- 获取元组的值
names[0]
- 元组切片和列表一样
names[2:5]
字典
字典特性
- 字典是key/value数据类型
- 字典是以hash值存放的,方便快速查找
注意事项
- 键必须是唯一的并且必须可hash
- 键不能为可变数据类型
用法
- 定义字典
a={'龙婷':[24,'设计部','UI',23333],'shanshan' : [25,'PR','wild modle,134141241']}
- 通过key获取内容
a['龙婷']
- 添加内容
a['stu1104'] = 'jordan' #key值可以自定义,但不能重复
- 判断一个key是否在字典中
'shanshan' in a #获取到一个布尔型值
- 获取字典中指定key的value
a.get('shanshan')
- 删除指定key
a.pop('shanshan')
- 随机删除
a.popitem()
- 通过del方法删除
del a['shanshan']
- 只打印key的值
names.key()
- 只打印value的值
names.values()
- 把key和value转换成一个个小的元组
names.items()
- 两个字典合并为一个
info = {'alex' : [24,'IT'],'Jack Ma' : ['Alibaba CEO']}
names.update(info) #列表中有对应值覆盖,没有对应值创建
names
{'Jack Ma': ['Alibaba CEO'],
'alex': [24, 'IT'],
'jordan': [35, 'basketball'],
'kobe': [23, 'basketball']}
- 字典中有某值,则取出,没有则创建
names.setdefault(2,'new 2') #第一个为key,第二个为value
- 定义多个key,然后统一赋值
info.fromkeys(['a','b','c'])
{'a': None, 'b': None, 'c': None}
info.fromkeys(['a','b','c'],'alex')
{'a': 'alex', 'b': 'alex', 'c': 'alex'}
字典的循环
- 方法1
for k in info: #第一种循环
print(k,info[k]) #如果只是print(k),则只打印key的值
- 方法2
for k,v in info.items(): #第二种循环,低效,需要先把循环转化为列表;
print(k,v)