Python容器型数据结构
1. 字符串格式化
1. 字符串拼接
先将所有的数据转为字符串,然后再拼接在一起
f='abcdefg' i=int(input("请输入下标:")) g = "数据b(" + str(f) + ")中:下标=" + str(i) + "时,值=" + str(f[i]) print(g)
运行结果:
请输入下标:0
数据b(abcdefg)中:下标=0时,值=a
字符串可以使用 + 进行拼接
还可以使用 * 来进行拼接
s='123' ss='1234' print(s+ss) #s和ss拼接 print(s*2) #s和自己拼接2次
运行结果:
1231234 123123
2. 字符串格式化
不需要对原数据进行处理,可以直接填充字符串中的指定位置,成为新的字符串
gg = f"数据b({f})中:下标={i}时,值={f[i]}" print(gg)
运行结果
请输入下标:0
数据b(abcdefg)中:下标=0时,值=a
2. 字符串格式化
不需要对原数据进行处理,可以直接填充字符串中的指定位置,成为新的字符串
f='abcdefg' i=int(input("请输入下标:")) gg = f"数据b({f})中:下标={i}时,值={f[i]}" print(gg)
运行结果:
请输入下标:1
数据b(abcdefg)中:下标=1时,值=b
Python3中字符串格式化方式
name="王强" age = 18 print("%s 今年 %s 岁" % (name, age)) print("{} 今年 {} 岁".format(name, age)) print(f"{name} 今年 {age} 岁")#常用这种格式
运行结果:
王强 今年 18 岁 王强 今年 18 岁 王强 今年 18 岁
f 时format首字母,表示格式化
f-string (F字符串)
主要用法:
1. 大括号之外的内容,原样输出
2. 大括号之内的内容,安装Python语法处理、
3. 如果要输出大括号,该怎么办? 使用大括号转义大括号
什么时候需要转义?
1,如果某个符号有特殊含义
2,为了说明这个符号在此处使用哪种含义,就需要转义
更多的用法可以参考:
《Python 格式化字符串文字(f-String)指南》:https://mp.weixin.qq.com/s/PZAWrp67i3YHau-yRZ
G0XA
2. 列表和元组
容器:可以向容器一样,存放多个数据,包括自己
1. 列表
使用率最高的容器数据类型,类型是 list
创建列表:
[1,2,3]
list(“123”)
a=[1,2,3]#直接创建列表 b=list("123")#通过其他类型转为列表 print(a) print(b)
运行结果:
[1, 2, 3] ['1', '2', '3']
修改列表:
1,增加元素
2,删除元素
3,修改排序 ,顺序也是列表数据的一部分,也可以修改
a = [] a.append(1) # 把一个数据加入到列表 a.append(1) # 把一个数据加入到列表 a.extend([2, 3, 4]) # 把一组数据,加入列表 a.insert(0, "beifan") # 把一个数据,放入到指定的位置 # 列表的底层结构,决定了 在右侧读写,效率更高 print("添加内容", a) a.pop() # 把最右侧的数据,移除\ print("删除1个内容", a) a.remove("beifan") # 移除指定数据 print("删除beifan", a) a.pop(0) # 移除指定下标的数据 print("删除第一个数字", a) a.clear() # 移除全部的数据 print("移除全部的数据",a )
运行结果:
添加内容 ['beifan', 1, 1, 2, 3, 4] 删除1个内容 ['beifan', 1, 1, 2, 3] 删除beifan [1, 1, 2, 3] 删除第一个数字 [1, 2, 3] 移除全部的数据 []
l = [3, 2, 1] l.sort() # 可以自定义排序算法,可以使用默认排序算法:ascii编码 print(l) print(l) print(l)
运行结果:
[1, 2, 3] [1, 2, 3] [1, 2, 3]
使用列表:
1,索引:返回1个内容,如果越界就报错
1,切片:返回多个内容,如果越界不报错
字符串属于一种特殊的容器型数据结构:内容只能是字符
2. 元组
一句话描述:元组可以理解为不可变的列表
数据类型:tuple
创建元组:
(1,2,3)
tuple([1,2,3])
a=(1,2,3) #直接创建元组 b=tuple([3,2,1]) #同列表转化为元组 print(a) print(b)
运行结果:
(1, 2, 3)
(3, 2, 1)
使用元组:
1,和列表相同
3,字典和集合
1. 字典
字典是Key=>Value映射结构 (KV结构), 数据类型是 dict
创建字典
大括号直接创建
dict 转换
a={"name":"小强","age":18} b=dict(name="小强",age=18) print(a) print(b)
运行结果:
{'name': '小强', 'age': 18} {'name': '小强', 'age': 18}
修改字典:根据key来完成
a = { "name": "小强", "age": 18, } # 底层原理,根据key找到value a["name"] = "百里" # 将key是name的数据,改为 百里,实现添加和修改数据 print("修改数据", a) a["tel"] = "13191121211" print("添加数据", a) del a['age'] print("删除数据", a)
运行结果:
修改数据 {'name': '小强', 'age': 18} 添加数据 {'name': '小强', 'age': 18, 'tel': '13191121211'} 删除数据 {'name': '小强', 'tel': '13191121211'}
a = { "name": "北凡", "age": 18, } print("所有的key",a.keys()) print("所有的value",a.values()) print("所有的键值对",a.items())
运行结果:
所有的key dict_keys(['name', 'age']) 所有的value dict_values(['北凡', 18]) 所有的键值对 dict_items([('name', '北凡'), ('age', 18)])
a = { "name": "小强", "age": 18, } a.update(name="大强") # 修改数据 # a.pop("age") # 删除数据 a.clear() # 删除全部的数据 print(a)
运行结果:
{ }
2,集合
一句话描述:集合可以理解为KV一致的字典
数据类型是:set
创建集合
{1,2,3,4,5 , ”a”}
set([1,2,3,4,4,4,4,])
集合
1,自带去重效果
2,没有固定顺序
a = {1, 2, 3, 4, "a", "b", "c"} b = set([1, 2, 3, 4, 4, 4, ]) print(a) print(b)
运行结果:
{'a', 1, 2, 3, 4, 'c', 'b'} {1, 2, 3, 4}
修改结合
print(a) print(b) a = {1, 2, 3} a.add(4) a.add(5) print("添加内容", a) a.remove(1) a.remove(2) print("删除内容", a)
运行结果:
添加内容 {1, 2, 3, 4, 5}
删除内容 {3, 4, 5}
3. 可哈希性
# 是不是所有的内容可以放入集合?可哈希的内容才能让入集合 # 是不是所有的内容可以作为字典的key?可哈希的内容才能作为字典的key
可哈希,比如:字符串、整数、元组等不可变数据类型
不可哈希,:列表,字典,集合 等 可变的数据类型
如何准确的判断一个数据是否可以哈希?
print(hash("asd"))
运行结果:随机数
总结:
1. 数字、字符串
2. 列表、元组
3. 字典、集合
从几个角度进行分类:
是否可变
是否可以使用索引、切片
是否可以哈希
是否可以存放其他数据类型
1. 编写“放大器”程序: 从基本输入获取内容,然后重复三次输出 (字符串格式化)
2. 有字符串 a = “abbaccadd”,编写代码计算a出现的次数 (字典 )
计算每一个字母出现次数(常见笔试题)
3. 有元组 t = (1,2,3,),编写代码,使其变为 (1,2,3,4,5,6) (类型转换)
i = input("请输入内容: ") print(f"将输入内容:{i},重复三次输出: {i * 3}") a = "abbaccadd" counts = list(a).count('a') # 将字符串a转换为列表,并统计a出现的次数 print(f"{a}中字母a的出现次数为: {counts}次") dicts = {} for i in a: dicts[i] = list(a).count(i) print(dicts) t = (1,2,3,) l = list(t) # 将元组t转换为列表,并赋值给l l.extend([4, 5, 6]) # 将列表[4, 5, 6]添加到列表l未尾 t = tuple(l) # 将列表l转换为元组,并赋值给元组t print(t)
运行结果:
请输入内容: 1 将输入内容:1,重复三次输出: 111 abbaccadd中字母a的出现次数为: 3次 {'a': 3, 'b': 2, 'c': 2, 'd': 2} (1, 2, 3, 4, 5, 6)