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)

 

 
posted @ 2022-10-07 15:46  进一步海阔天空  阅读(7)  评论(0编辑  收藏  举报