1.元组的读写操作
元组(Tuple)是 “不可变” 的列表(List)
基本特点:
(1) 元组的读取方式与列表相同
(2) 元组的元素在创建后不允许修改
(3) 元组允许使用 “元组运算符” 来创建新元素
1.创建元组:
加小括号() 与 不加小括号 都可以创建元组:
例: t1 = ‘a’, ‘b’, ‘c’, 1, 2, 3
t2 = (‘a’, ‘b’, ‘c’, 1, 2, 3)
print(t1, t2)
–> (‘a’, ‘b’, ‘c’, 1, 2, 3) (‘a’, ‘b’, ‘c’, 1, 2, 3)
2.获取数据 (在获取数据时,与列表操作完全相同)
3.元组在创建后, 内容不可变 (写入数据的函数同样不被支持)
特殊情况: 如果元组内含有列表, 那么列表的内容是允许被修改的
4.元组运算符
注意:如果元组只有一个元素时, 必须在这个元素后加逗号说明这是一个元组
利用运算符简化了元组的操作, 并不是新的运算符
例:
(1,2,3) + (4,5) --> (1,2,3,4,5)
(‘see’, ‘you’) * 2 --> (‘see’, ‘you’, ‘see’, ‘you’)
PS: 元组运算符同样适用于列表
2.列表与元组的区别
3.序列Range
序列(Sequence) 指的是有序的队列。不是一种数据类型, 是一种数据结构的统称:
字符串(str)、列表(List)、元组(Tuple)、数字序列(Range) (数字范围)
(1) 成员运算符in 在所有 序列数据结构 中通用
(2) 序列中的元素按添加顺序排列,序列中的数据按 “索引” 获取
【数字序列】
(1) 内容不可变
(2) 使用 range() 函数创建
(3) 语法 : r = range(0,100) #产生0-99的数字序列
常用方法:增加步长 r = range(起始值, 终止值, 步长)
4.序列类型的互相转换
(1) list() – 转换为列表(会将每一个数字、字母、标点符号都单独拆分)
例: s1 = list(“abdc,123”) --> [‘a’, ‘b’, ‘d’, ‘c’, ‘,’, ‘1’, ‘2’, ‘3’]
(2) tuple() – 转换为元组
(3) join()、str() – 转换为字符串
str() 函数用于将单个数据转换成字符串, join() 函数对列表进行连接
例: print("".join([‘a’, ‘b’, ‘c’])) --> abc
前面的 “” 代表分隔符: print("#".join([‘a’, ‘b’, ‘c’])) --> a#b#c
PS: join()函数要求 必须所有元素都是字符串
5.集合基本知识
集合(Set)是Python中的内置数据结构, 可被看作是 “没有Value的字典”
基本特点:
(1) 集合元素无序且不能重复
(2) 集合是可变的
(3) 集合允许数学运算
(4) 集合是分散存储的
存储原理:
集合的创建 :
(1) 使用{}符号创建集合
例: col = {‘Shadow’, ‘Shark’, ‘Alice’} --> {‘Shadow’, ‘Shark’, ‘Alice’}
(2) 使用set()函数创建集合
例:
从其他类型数据转换: col = set([‘Alice’, ‘Shadow’,‘Shark’]) --> {‘Shadow’, ‘Shark’, ‘Alice’}
创建字符串集合: col = set(“朝辞白帝彩云间”) --> {‘白’, ‘辞’, ‘云’, ‘朝’, ‘彩’, ‘间’, ‘帝’}
PS: 空集合的创建
若是直接用 col = {} ,则 col 会被认为是一个空字典
需要使用 set()函数: col = set()
6.集合关系和数学运算
交集(intersection)、并集(union)、差集(difference)
现有集合:
col1 = {“联想”, “华为”, “苹果”}
col2 = {“小米”, “锤子”, “苹果”}
(1) 交集: 获取两个集合中重复的部分, 创建一个新集合
intersection
例:print(col1.intersection(col2)) --> {‘苹果’}
intersection_update() : 创建交集,并将返回结果用来更新原集合
例:col1.intersection_update(col2)
print(col1)
–> {‘苹果’}
(2) 并集: 将两个集合所有元素合并, 去重
union
例:print(col1.union(col2)) --> {‘华为’, ‘小米’, ‘联想’, ‘苹果’, ‘锤子’}
(3) 差集: 两个集合之间差异的部分
difference # 代表得到集合A在集合B中不存在的部分
例: print(col1.difference(col2)) --> {‘联想’, ‘华为’}
symmetric_difference # 代表双向差集
例: print(col1.symmetric_difference(col2)) --> {‘华为’, ‘小米’, ‘锤子’, ‘联想’}
difference_update # 将结果返回给原集合
例: col1.difference_update(col2)
print(col1) --> {‘华为’, ‘联想’}
symmetric_difference_update # 将双向差集结果返回更新原集合
例: col1.symmetric_difference_update(col2)
print(col1) --> {‘联想’, ‘华为’, ‘小米’, ‘锤子’}
7.集合间的关系操作
已有集合: a = {1, 3, 5, 7, 9}
b = {9, 5, 7, 3, 1}
c = {1, 3, 5}
(1) == 判断两个集合的元素是否完全相同:
print(a = = b) --> True
(2) issubset() 判断是否为"子集"
print(a.issubset(b)) --> True
(3) issuperset() 判断是否为"父集"
print(b.issuperset(a)) --> True
(4) isdisjoint() 判断是否存在重复元素
PS: True代表不存在重复元素, False则代表存在重复元素
print(c.isdisjoint(b)) --> False
8.操作集合元素
(1) 判断元素存在: 身份运算符 in
(2) 取值:
集合不支持按索引进行数据提取
(3) 新增数据:
一次添加一个元素 : add() 函数 (若新增的数据已存在集合中, 则忽略此句)
一次添加多个元素 : update() 函数
(4) 更新数据:
在集合中,不支持直接更新元素。
若要更新,则需要删除原有元素,再创建新元素。
例: set.remove(“a”)
set.add(“b”)
PS: remove() 若删除不存在的元素时, 则会报错。
为解决这个问题, 引入了discard() 函数
discard() 如果遇到不存在的元素时, 则会忽略删除函数。
9.三种常用的生成式
语法: [ 被追加的数据 循环语句 循环或者判断语句 ] or {…}
(1) 列表生成式
(2) 字典生成式
例: list1 = [ ‘张三’, ‘李四’, ‘王五’ ]
dict1 = {i+1:list1[i] for i in range(0,len(list1))}
print(dict1) --> {1: ‘张三’, 2: ‘李四’, 3: ‘王五’}
(3) 集合生成式
例: set1 = {i*j for i in range(1, 4) for j in range(1, 4) if i == j}
print(set1) --> {1, 4, 9}