7:列表的特点
- 列表元素按顺序有序排序
- 索引映射唯一个数据
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配和回收内存
8:列表的查询操作
(1)获取列表中指定元素的索引 index()
- 如查到列表中N个相同的元素,只返回相同元素中的第一个元素的索引
- 如果查询的元素列表中不存在,则会抛出ValueError
- 还可以在指定的start和stop之间进行查找
(2)获取列表中的单个元素
- 正向索引从0到N-1 例如:lst[0]
- 逆向索引从-N到-1 例如:lst[-N]
- 指定索引不存在,抛出IndexError
(3)获取列表中多个元素
(4)判断指定元素在列表中是否存在(元素 in/not in 列表名)
- in
- not in
(5)列表元素的遍历
for 迭代变量 in 列表名:
9:列表元素的增删改
(1)增加操作
(2)删除操作
- 切片操作删除至少一个元素,将产生一个新的列表对象。
- lst.clear():清空列表中所有的元素。
- del lst:del语句将列表对象删除。
(3)修改操作
- 为指定索引元素指定一个新值。
- 为指定的切片赋予一个新值。
(4)排序操作(常见两种方法)
- 调用 sort() 方法,列有中的所有元素默认按照从小到大的顺序进行排序,可以指定 reverse=True,进行降序排列。(lst.sort())
- 调用内置函数 sorted(),可以指定 reverse=True ,进行降序排序,产生新的列表对象,原列表不发生改变。(new_lst = sorted(lst))
(5)列表生成式
-
语法格式
lst = [i for i in range(1, 10)]
- 注意事项:“表示列表元素的表达式”中通常包含自定义变量。
10. 字典
字典:以键值对的方式存储数据,字典是一个无序的序列。
11.字典的创建
- 第一种方式:使用 {} 创建字典。
- 第二种方式:使用内置函数 dict()。
- 第三种方式:空字典 {}。
'''使用{}创建字典'''
socres = {'张三':100, '李四':200, '王五':300}
print(scores)
print(type(scores))
'''第二种创建dict()'''
student = dict(name='jack', age=20)
print(student)
'''空字典'''
d = {}
print(d)
12.字典常用的操作
-
元素的获取
-
[] 取值和 get() 取值的区别
- [] 如果字典中不存在指定的key,抛出keyError异常。
- get() 方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回
-
key 的判断
-
字典元素的删除(del 删除键值对)
del scores['张三']
-
字典元素的新增
scores['李明'] = 100
-
获取字典视图的三个方法
-
字典元素的遍历(item获取的是字典中的键)
for item in scores: print(item, scores[item], scores.get(item))
-
字典的特点
- 字典中的所有元素都是一个key-value 对,key不允许重复, value可以重复。
- 字典中的元素是无序的。
- 字典中的key必须是不可变的对象。
- 字典也可以根据需要动态地伸缩。
- 字典会浪费大的内存,是一种使用空间换时间的数据结构。
-
字典生成式
- 内置函数 zip()
- 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
- 内置函数 zip()
item = ['fruits', 'books', 'others']
prices = [96, 78, 85]
d = {item:price for item, price in zip(items, prices)}
13. 元组
- 元组:元组是python内置数据结构之一,是一个不可变序列。
- 不可变序列和可变序列
- 不可变序列:字符串、元组
- 不可变序列:没有增、删、改的操作。
- 可变序列:列表、字典
- 可变序列:可以对序列执行增、删、改操作,对象地址不发生改变。
- 不可变序列:字符串、元组
14.元组的创建方式
-
直接使用小括号
t = ('Python', 'hello', 'world')
-
使用内置函数tuple()
t = tuple(('Python', 'hello', 'world'))
-
只包含一个元组的元素需要使用逗号和小括号
t = (10, )
15.元组的遍历
- 元组是可迭代对象,所以可以使用for…in进行遍历
t = tuple(('Python', 'hello', 'world'))
for item in t:
print(item)
16.集合
-
python语言提供的内置数据结构
-
集合中的元素是无序的
-
与列表、字典一样都属于可变类型的序列
-
集合没有value的字典
17.集合创建
-
直接{}
s = {'Python', 'hello', 'world'} # 集合中元素不允许重复
-
使用内置函数set()
s = set(range(6)) print(s) print(set([3,4,53,56])) print(set((3,4,43,345))) print(set('Python')) print(set({123,4,5,6})) print(set())
18.集合相关操作
- 集合元素的判断操作
- in 或 not in
- 集合元素的新增操作
- 调用add() 方法,一次添中一个元素
- 调用update() 方法至少添加一个元素
- 集合元素的删除操作
- 调用remove() 方法,一次删除一个指定的元素,如果指定的元素不存在抛出KeyError
- 调用 discard() 方法,一次删除一个指定元素,如果指定的元素不存在不抛出异常
- 调用 pop() 方法,一次只删除一个任意元素
- 调用 clear() 方法,清空集合
19.集合之间的关系
- 两个集合是否相等
- 可以使用运算符==或!=进行判断
- 一个集合是否是另一个集合的子集
- 可以调用方法issubset进行判断
- B是A 的子集
- 一个集合是否是另一个集合的超集
- 可以调用方法issuperset进行判断
- A是B的超集
- 两个集合是否没有交集
- 可以调用方法isdisjiont进行判断(有交集输出False,无交集输出True)
20.集合的数学操作
-
交集
s1 = {10, 20, 30, 40} s2 = {20, 30, 40, 50, 60} print(s1.intersection(s2)) print(s1 & s2) # intersection与&等价 # 输出的结果 {40, 20, 30} s1 s2集合没有发生变化
-
并集操作
print(s1.union(s2)) print(s1 | s2) # 输出结果为 {10, 20, 30, 40, 50, 60} s1 s2集合没有发生变化
-
差集操作
print(s1.difference(s2)) print(s1 - s2) # 输出结果为 {10} s1 s2集合没有发生变化
-
对称差集
print(s1.symmetric_difference(s2)) print(s1^ s2) # 输出结果为 {50, 10 ,60} s1 s2集合没有发生变化
21.集合生成式
-
用于生成集合的公式
s = {i*i for i in range(1, 10)} print(s)
-
将{}修改成[]就是列表生成式
-
没有元组生成式