首页 > 其他分享 >三、容器型数据结构(列表、元祖、字典、集合)

三、容器型数据结构(列表、元祖、字典、集合)

时间:2022-12-09 00:00:13浏览次数:44  
标签:成员 列表 key print 数据结构 元祖 元组 字典

1. 列表list
1.1 创建
列表的创建方式有2种:
使用符号:中括号
a = [1,2,3]
使用内置函数:list()
b = list("123")
问题来了:
列表作为一个容器,它可以放入它“自己”吗?
可以

1.2 修改
增加元素
删除元素
修改排序
表一:列表增加成员的方法

 

 

 表二:列表移除成员的方法

 

 

表三:列表修改排序的方法

 

 

 

 

 注意:列表的排序是针对自身的修改,所有没有返回值

l = [1, 2, 3]
l.append(4) # [1,2,3,4]
l.append(5) # [1,2,3,4,5]
l.append(6) # [1,2,3,4,5,6]
l.insert(0, 0) # [0,1,2,3,4,5,6]
l.insert(4, 2.5) # [0,1,2,2.5 ,3,4,5,6]
# 3 表示第四个
print(l)
ll = ["a", "b", "c", "d"]
l.extend(ll)
print(l)

l = [0, 1, 2, 3, 2.5, 4, 5, 6, 'a', 'b', 'c', 'd']
# l.remove("a")
l.pop(8) # 位置
l.clear() # 全部移除 ,清空列表
print(l)

l = [1, 2, 3, 6, 5, 4]
l.sort() # 默认:从小到大排序
# l.reverse()
print(l)

1.3 使用
取值
计算
表四:列表查找成员的方法

 

表五:列表返回成员的方法

 

 

 

l = ["1", 1, 2, 3, "a", "a", "d", "x", "y"]
# 打印 a 前面的所有内容
i = l.index("a") # a出现的位置
print(l[:i]) # 打印a 从起始位置到a所在位置的 所有内容
l.reverse()
i = l.index("a") # a出现的位置
ll = l[:i]
ll.reverse()
print(ll) # 打印a 从起始位置到a所在位置的 所有内容

 1.4 基于切片的用法

l = ["1", 1, 2, 3, "a", "a", "d", "x", "y"]
print(l[0]) # 获取第一个元素
l[0] = "北凡" # 修改
del l[0] # 删除
print(l)

2. 元组tuple

一句话描述:元组是不可变得列表
2.1 创建
元组的创建方式有2种:
使用符号:小括号
a = (1,2,3,4,1.1)
使用内置函数:tuple
b = tuple("abcdef")
2.2 修改
元组不可变,所以无法修改

2.3 使用
表五:元组的全部方法

 

 

 

对于有Python基础的同学,想要了解列表的元组深度区别:
https://mp.weixin.qq.com/s/9olz7-M0xoUn_r5pEhbYdg

3. 字典dict

列表、元组、字符串,是序列:根据元素的位置(顺序、索引)来决定执行内容, 可以使用索引、切片
的用法
所谓位置,通过整数表示的元素在序列种所处顺序,单调不好记忆
字典可以通过自主命名key来进行取值,好记忆,方便使用
这样使用方式决定了:
字典使用一种 key-value映射结构,简称 k-v结构
key必须无歧义 (可hash)

3.1 创建
字典的创建方式有几种
使用符号:大括号
a = {"A":1, "B":2}
内置函数:dict
b = dict(a=1,b =2)

a = {"a": 1, "b": 2}
print(a)
b = dict(a=1, b=2)
print(b)
# 问题来了 使用dict的时候,可不可以,不写等于号
d = dict([["a", 1], ["b",2]])
print(d)

3.2 修改
增加成员
修改成员
删除成员

字典使用key来访问元素,key具有无歧义的唯一性,所以增加数据和修改数据,的意义是一样的
表七:字典的增加、修改成员方法

 

 

 表八:字典删除成员方法

 

3.3 使用

 

 表九:字典获取成员的方法

 

 

 

d = {"b": 2, "c": 3}
print("字典里所有的key: ", d.keys())
print("字典里所有的value: ", d.values())
print("字典里所有的键值对: ", d.items())
# 这里返回的不是列表,而是映射

除了方法之外,可以使用key 直接对数据进行操作

d = {}
d['a'] = 1 # 增加成员
d['a'] = 2 # 修改成员
print(d['a']) # 读取成员,如果key不存在,会抛异常
del d['a'] # 删除成员
print(d)

4. 集合set
数字、字符串
列表 、元组
字典、集合
一句话描述:集合是kv一致的字典,因为kv一致,不需要重复出现,所以不需要键值对,所以自带去重
效果

4.1.创建
使用符号 :大括号
s = {"a" , "b"}
使用内置函数:set
s = set("abcd")

6. 关于可哈希
必须是可哈希的:
字典的key
集合的成员
为什么要分可哈希 不可哈希
7. 容器数据类型的通用方法

l = {"a": 1, "b": 2}
print(len(l)) # 获取容器的长度(成员个数)
print(1 in l) # 判断数据是否在容器中
# 字典,必须要通过key访问value
print(list(l))

总结

1. 容器型,指的是可以将多个数据,放入其中
2. 列表、元组、字符串 是序列,可以通过索引、切片进行操作,也可以通过方法进行操作
3. 字典 是一个 mapping(k-v)结构,通过key进行操作,也可以通过方法进行操作
4. 集合是一种特殊的类型,在初级教程中,可以视为kv一致的字典,具有无序、自动去重的特性

作业

1. 有列表 l = [2,3,4,5,1],编写代码,移除列表中小于3的数字


l = [2,3,4,5,1]
for i in l:
if i<3:
l.remove(i)
print(l)


2. 有字符串a = "abbaccadd",编写代码,分析a出现的次数

a = "abbaccadd"
print(a.count("a"))

3. 有字符串a = "abbaccadd",编写代码,分析字符串由哪些字母组成

a = "abbaccadd"
l=[]
for i in a:
if i not in l:
l.append(i)
print(l)

标签:成员,列表,key,print,数据结构,元祖,元组,字典
From: https://www.cnblogs.com/zejunliu/p/16967778.html

相关文章