python之常见数据类型(str,list,tuple,dict)及操作
I.字符串(str)
(1)取值
-
字符串中的元素:单个字母,数字,汉字。单个字符都称为元素。
s = 'hello!'
-
len(数据):统计数据的长度
print(len(s)) # 6
-
取某个值: 字符串名[索引值]
- 正序:索引值从0到 (len-1) , 逆序:索引值从-(len)到-1
- 切片:字符串名[索引头:索引尾:步长] 取头不取尾,步长默认为1
- 取全部:字符串名[:]
- 倒序:字符串名[::-1],字符串名[-1: -(len):-1]
print(s[5]) # 索引,! print(s[-1]) # ! print(s[1:5:2]) # el # 取头不取尾1,3 print(s[1:5]) # ello # 1,2,3,4 print(s[2:4:2]) # l # 2 print(s[:]) # hello! # 取全部 print(s[:4]) # hell # 取3之前的全部0,1,2,3 print(s[3:]) # lo! # 3以后的全取 3,4,5 print(s[-1:-7:-1]) # 倒序输出:!olleh print(s[::-1]) # 倒序输出:!olleh
(2)分割 :字符串名.split('指定切割符号',指定切割次数)
- 只有字符串可以使用
- 返回一个列表类型的数据
- 切割次数默认为1
print(s.split('e')) # ['h', 'llo!'] print(s.split('l')) # ['he', '', 'o!'] print(s.split('l', 1)) # ['he', 'lo!']
(3)替换 :字符串名.replace('指定替换值','新值',指定替换次数)
s1 = 'heelo!' new = s1.replace('o', '@') print(new) # heel@! new1 = s1.replace('e', '1', 2) print(new1) # h11lo!
(4)去除指定字符:字符串名.strip('指定去除字符',指定去除次数)
# 只去掉头和尾的字符,不能去除直接字符 s = ' hello ' new3 = s.strip() # 默认去空格 print(new3) # hello new4 = s.strip(' he') print(new4) # llo
(5) 拼接
- +:注意必须数据类型相同
- join:字符串名.join((字符串1,字符串2))
s_1 = 'python,' s_2 = 'welcome!' s_3 = 666 print(s_1 + s_2 + str(s_3 )) # s_3强制转换后才能拼接 # python,welcome!666 print(s_1, s_2, s_3) # python, welcome! 666
(6)格式化输出
- format 用{}来占位
- %:%s字符串(任何数据), %d数字(整型) %f浮点数 (%.2f四舍五入保留两位小数,.x %指定保留百分比位数
- 数字补齐: 数字补零(填充左边,宽度为4)【{:x>4s}】;数字补零(填充右边,宽度为4)【{:x<4s}】
- 对齐: 左对齐,默认宽度为10 【{:10s}】;左对齐,宽度为10【{:<10s}】;中间对齐,宽度为10【{:^10s}】
age = 18 name = 'zhengzi' print("欢迎进入" + str(age) + "岁的" + name + "的博客园") # 欢迎进入18岁的zhengzi的博客园 # (1)格式化输出1:format 用{}来占位 print("欢迎进入{}岁的{}的博客园".format(age, name)) # 欢迎进入18岁的zhengzi的博客园,默认顺序 print("欢迎进入{1}博客园,她今年{0}".format(age, name)) # 欢迎进入zhengzi博客园,她今年18 # (2)格式化输出2:% %s字符串(任何数据), %d数字(整型) %f浮点数 (%.2f四舍五入保留两位小数) print("欢迎进入%d岁的%s的博客园" % (age, name)) # 欢迎进入18岁的zhengzi的博客园
(7)字符串转义
- \n:换行符 \t:水平制表符(tab键 :为4个字符) r:关闭转义
II. 列表 (List)
什么时候用列表?---同一个类型的数据,建议用列表
注意:列表中的子元素为元组,不可以对元组的子元素进行修改,但可以整体修改
m = [1, 0.02,'hello',(1,2,3),True] # m[3][2] = 'nihao'错误 m[3] = 'nihao' print(m) # [1, 0.02, 'hello', 'nihao', True]
例如:
a = [1, 0.02,'hello',[1,2,3],True]
(1) 取值
- 取某个值 : 列表[索引值]
- 切片 : 列表名[索引头:索引尾:步长]
# 取值 print(a[-1]) # True print(a[2]) # hello #切片 print(a[::2]) # [1, 'hello', True] print(a[0:5:2]) # [1, 'hello', True]
(2) 添加元素
- 追加(1个元素)在末尾: 列表名.append(追加的元素)
- 插入: 列表名.insert(指定位置,插入值)
- 添加多个值 : 列表名.extend(元素1,元素2...)
a = [1, 0.02,'hello',[1,2,3],True] a.append('你很可爱') print('a列表的值{0}'.format(a)) a.insert(2,'kite') print('a列表的值{0}'.format(a)) a.extend([11,12,13]) print('a列表的值{0}'.format(a)) # a = [1, 0.02,'hello',[1,2,3],True,11,12,13]
(3) 修改 : 列表名[索引值] = 赋新的值
b = [1, 0.02,'hello',[1,2,3],True] b[1] = 'Time' # 赋值 print('b列表的值{0}'.format(b))
(4) 删除
- 删除指定元素 : 列表名.pop(索引值) , 列表名.remove(索引值) 【指定元素不存在,报错】
- 删除最后一个元素 : 列表名.pop()
- 清空列表 : 列表名.clear()
a.pop() a.pop(2) # 删除a[2] #删除指定索引位置的元素 a.remove(1) # 删除1 a.clear()
(5)查找元素索引值:列表名.index(元素)
- 查找指定元素的下标,如果没有报错,找到返回下标
(6)统计元素次数:列表名.count(元素)
(7)排序:列表名.sort() 【只对数值排序】
- 升序(从小到大): 列表名.sort()
- 降序:列表名.sort(reverse=True)
(8)反转:列表名.reverse()
(9) 使用时间 : 需对元素进行增删改查时
注意:快速格式化(解决列表值之间有下划线的问题):快捷键:Ctrl+Alt+L 或 code - reformat code
III. 元组 ( Tuple )
什么时候用列表?---操作数据库存放时,不支持修改(增删改)
注意:元组中的子元素为列表,可以对列表的子元素修改
m = (1, 0.02,'hello',[1,2,3],True) m[3][2] = 'nihao' print(m) # (1, 0.02, 'hello', [1, 2, 'nihao'], True)
(1) 取值
- 取单个值 : 元组名[索引值]
- 切片 : 元组名[索引头:索引尾:步长]
a = (1, 0.02,'hello',[1,2,3],True) print(a[-1]) # True print(a[2]) # hello print(a[::2]) # [1, 'hello', True] print(a[0:5:2]) # [1, 'hello', True]
注意:元组里面只有一个元素,需要加逗号 【如果不加逗号,不是元组,是数值或字符串】
x = ('hello') print(type(x)) # <class 'str'> y = (1) print(type(y)) # <class 'int'> z =(1,) print(type(z)) # <class 'tuple'>
列表与元组的区别:列表是可变的,可以追加,修改,删除其中的元素;而元组是不可变的,不可以追加,修改,删除其中的元素。元素个数不确定时,建议使用列表。
IV. 字典 ( Dict )
(1)表达方式
- key:value(键值对)
- dict 内置函数dict(key1=value1,key2=value2)
- 列表嵌套元组:dict([(键1,值1),(键2,值2)])
(2) 取值
- 取键对应的值 : 字典名[key] 【键不存在,会报错】;字典名.get(key) 【如果键不存在,返回NONE】
- 取所有键 : 字典名.keys()
- 取所有值:字典名.values()
- 取键值对 : 字典名.items() 【返回 是dict_items类型,可以通过list转为列表类型;转换后,列表嵌套元组格式】
(3) 新增
- 设置默认值 : 字典名.setdault()
- 字典里不存在的key :字典名[新key] = value
- 增加多个元素:字典名.update({key1:value1,key2:value2})
(4) 修改
- 字典中已存在的key : a[已存在的key] = value
(5) 删除
- 删除指定key的键值对 : 字典名.pop(key)
- 删除字典中最后一个键值对:popitem()
- 删除数据的关键字,可以删除任何数据(可变类型): del 字典名[key]
- 删除整个字典:del 字典名
- 清空 : 字典名.clear()
(6) 拷贝: 字典名.copy()
n2变,n变,n1不变 : n = {'name':'kite','age':18} n1 = n.copy() n2 = n n2[2] = 'four' print('修改后n',n) print('修改后n1',n1) print('修改后n2',n2)
V. 布尔值 : bool , 返回值是True,False
VI. 数值 ( int,float )