【python】步骤一 第六课、元组与集合

第六课、python中非可变类型的数据集合

一、 课程介绍

  课时介绍

  • 元祖简单介绍
  • 元组与序列基本操作
  • 集合的简单介绍
  • 集合的基本操作

  课程目标

  • 理解元组与列表的差别
  • 了解序列及其常用类型
  • 掌握集合的特性与常用函数

二、元组与序列基本操作(重要的一章)

  2-1 元组的读写操作

   元组(Tuple)

  • 元组(Tuple)是“不可变”的列表(List)
  • 元组使用小括号,列表使用方括号
  • tup1=('physics','chemistry',1997,2000)

  元组的读与写

  • 元组的读取方式与列表相同
  • 元组的元素在创建后不允许修改
  • 元祖允许使用“元组运算符”来创建新元祖
    • (5,6,7)+(8,9,10)=(5,6,7,8,9,10)
    • (‘see’,‘you’)*2=('see','you','see','you')

 

 1 # 元组的使用
 2 # 创建
 3 t = ('a', 'b', 'c', 1, 2, 3)
 4 print(t)
 5 print(type(t))
 6 # 获取数据,在获取数据时与列表完全相同
 7 print(t[5]) # 正序索引,获取第6个元素
 8 print(t[-1]) # 倒序索引
 9 print(t[1:4]) # 范围取值
10 print('b' in t) # 成员运算符
11 # 元祖在创建后内容不可变
12 # t[0] = 2
13 # 写入数据的函数同样不被支持
14 # t.insert('f')
15 # 如果原组内持有列表,那么列表的内容是允许被修改的
16 t2 = (['张三', 38, 5000], ['李四', 28, 2000])
17 item = t2[0]
18 print(item)
19 item[1]=40
20 print(t2)
21 # t2.pop(0)
22 # 元组运算符
23 # 元组运算符同样适用于列表
24 t3 = (1, 2, 3)+(4, 5, 6)
25 print(t3)
26 t4 = ('see', 'you')*2
27 print(t4)
28 # 如果元组只有一个元素时,必须在这个元素后增加逗号,说明这是一个元组
29 t5=(10,)*5
30 print(t5)

  2-2 元组与列表的区别

  列表与元祖的区别与应用场景

列表元组
内容允许扩展内容不可变
内存存储动态变化创建后固定不变
效率较低效率最高
运行时数据需要变更时使用用于保存稳定不变的数据
保存天气数据、股市数据保存国家名、元素周期表

 

 

 

 

 

  2-3 序列Range的介绍与使用(学好range,提高编程效率)

   认识”序列“

  • 序列(Sequence)是指“有序”的队列
  • 序列中的元素顺序按添加顺序排列
  • 序列中的数据通过“索引”进行获取

  序列包含常用数据结构

  • 字符串(Str)
  • 列表(List)
  • 元组(Tuple)
  • 数字序列(Range)

  数字序列(Range)

  • range用于表示数字序列,内容不可变
  • 数字序列使用range()函数创建
  • 语法:r=range(0,100)#产生0-99数字序列

 

 1 # 创建数字序列
 2 r1 = range(10, 20) # 10到19的整数(左闭右开)
 3 print(r1)
 4 print(type(r1))
 5 print(r1[3:5])
 6 
 7 # 增加步长
 8 r2 = range(10, 20, 2)
 9 print(r2) # 10,12,14,16,18
10 print(r2[4])
11 print(r2[0:2])
12 # r2[4] = 20
13 
14 # 成员运算符in
15 print(12 in range(10, 20))
16 print(r2) # 10,12,14,16,18
17 print(r2[4])
18 print(r2[0:2])

  2-4 数字序列经典案例

 

  数字序列经典案例

  • 通过range遍历其他序列
  • 科学运算(质数,斐波那契数列...)
1 # 利用range遍历其他序列
2 c = "abcdefg"
3 for i in range(0, len(c)):
4     letter = c[i]
5     print(letter)
1 # 斐波那契数列
2 # 1,1,2,3,5,8,13,...
3 result = []
4 for i in range(0,50):
5     if i == 0 or i ==1:
6         result.append(1)
7     else:
8         result.append(result[i-2] + result[i-1])
9 print(result)
 1 # 判断质数
 2 l = 776351721
 3 is_prime = True
 4 for i in range(2, l):
 5     if l % i == 0:
 6         is_prime = False
 7         break
 8 if is_prime == True:
 9     print("{0}是质数".format(l))
10 else:
11     print("{0}不是质数".format(l))

  2-5 序列类型的互相转换

   序列类型的互相转换

  •  list() - 转换为列表
  • tuple() - 转换为元组
  • join()、str() - 转换为字符串
 1 # 序列类型间的互相转换
 2 l1 = ['a', 'b', 'c']
 3 t1 = ('d', 'e', 'f')
 4 s1 = 'abc123'
 5 s2 = 'abc,123'
 6 r1 = range(1,4)
 7 
 8 # list() - 转换为列表
 9 l2 = list(t1)
10 print(l2)
11 print(list(s1))
12 print(s2.split(","))
13 print(list(r1))
14 
15 # tuple() - 转换为元组
16 print(tuple(l1))
17 print(tuple(s1))
18 print(tuple(s2.split(",")))
19 print(tuple(r1))
20 
21 # str函数用于将单个数据转为字符串 join对列表进行连接
22 print(str(l1))
23 print("".join(l1))
24 print("|".join(t1)) # join必须要求所有元素都是字符串
25 # print(",".join(r1))
26 s3 = "" # 将包含数字的序列输出
27 for i in r1:
28     s3 += str(i)
29 print(s3)

第3章 集合的基本操作

   3-1 集合的介绍

  什么是集合

  • 集合(set)是python中的内置数据结构
  • 集合可被看做是“没有value的字典”
    • {'张三','李四','王五','赵六','宋七','杨八'}

  集合的特点

  • 集合元素是无序的
  • 集合元素不能重复
  • 集合是可变的
  • 集合允许数学运算
  • 集合石分散存储的

  集合储存原理

  

  3-2 集合的创建

  集合的创建

  • 使用{}符号创建集合
  • 使用set()函数创建集合
 1 # 集合的创建
 2 college1 = {"哲学", "经济学", "法学", "教育学"}
 3 print(college1)
 4 
 5 # set()内置函数从其他数据结构转换
 6 college2 = set(["金融学", "哲学", "经济学", "历史学", "文学"])
 7 print(college2)
 8 
 9 # 使用set创建字符的集合
10 college3 = set("中华人民共和国")
11 print(college3)
12 
13 # 空集合的创建
14 # college4 = {}
15 college4 = set()
16 print(type(college4))

  3-3 集合的数学运算

  集合关系与数学运算

  • 交集(intersection)
  • 并集(union)
  • 差集(difference)
 1 # 集合的数学运算
 2 college1 = {"哲学", "经济学", "法学", "教育学"}
 3 college2 = set(["金融学", "哲学", "经济学", "历史学", "文学"])
 4 
 5 # 交集,获取两个集合中重复的部分,新建一个集合
 6 c3 = college1.intersection(college2)
 7 # 更新原有集合
 8 college1.intersection_update(college2)
 9 print(college1)
10 
11 college1 = {"哲学", "经济学", "法学", "教育学"}
12 college2 = set(["金融学", "哲学", "经济学", "历史学", "文学"])
13 # 并集,将两个集合所有元素合并,去重
14 c4 = college1.union(college2)
15 print(c4)
16 
17 college1 = {"哲学", "经济学", "法学", "教育学"}
18 college2 = set(["金融学", "哲学", "经济学", "历史学", "文学"])
19 # 差集,是指两个集合之间差异的部分
20 # difference代表得到A在B集合中不存在的部分
21 c5 = college2.difference(college1)
22 print(c5)
23 # symmetric_difference 代表双向差集
24 c6 = college1.symmetric_difference(college2)
25 print(c6)
26 
27 college1.symmetric_difference_update(college2)
28 print(college1)

  3-4 集合间的关系操作(注意多个集合间的操作)

 1 # 集合间的关系操作
 2 s1 = {1, 2, 3, 4, 5, 6}
 3 s2 = {6, 5, 4, 3, 2, 1}
 4 # == 判断两个集合的元素是否完全相同
 5 print(s1 == s2)
 6 
 7 s3 = {4, 5, 6, 7, 10}
 8 s4 = {1, 2, 3, 4, 5, 6, 7, 8}
 9 # issubset判断是否为“子集”
10 print(s3.issubset(s4))
11 # issuperset判断是否为“父集”
12 print(s4.issuperset(s3))
13 
14 s5 = {5}
15 s6 = {1, 3, 5, 7, 9}
16 # isdisjoint 函数判断两个集合是否存在重复元素
17 # True代表不存在重复元素,False则代表存在重复
18 print(s5.isdisjoint(s6))

  3-5 操作集合元素

 1 # 集合的遍历
 2 college1 = {"哲学", "经济学", "法学", "教育学"}
 3 for c in college1:
 4     print(c)
 5 
 6 # 判断元素存在
 7 print("哲学" in college1)
 8 print("计算机学" in college1)
 9 
10 # 集合不支持按索引提取数据
11 # print(college1[3])
12 
13 # add新增数据,一次只能添加一个元素
14 college1.add("计算机学")
15 college1.add("法学")
16 print(college1)
17 # update方法来一次添加多个元素
18 college1.update(["生物学", "工程学"])
19 print(college1)
20 
21 # 更新操作时要删除原有元素,再创建新元素
22 # remove如果删除不存在的元素时,就会报错
23 # college1.remove("生物")
24 # discard如果遇到不存在的元素时,则会忽略删除操作
25 college1.remove("生物学")
26 college1.discard("生物")
27 college1.add("医学")
28 print(college1)

  3-6 三种常用生成式

   三种内置生成式

  • 列表生成式
  • 字典生成式
  • 集合生成式
# 生成式
# 生成式语法:[被追加的数据 循环语句 循环或者判断语句]|{}
# 列表生成式
lst1 = []
for i in range(10, 20):
    lst1.append(i * 10)
print(lst1)

lst2 = [i * 10 for i in range(10, 20)]
print(lst2)

lst3 = [i * 10 for i in range(10, 20) if i % 2 == 0]
print(lst3)

for i in range(10, 20):
    if i % 2 == 0:
        lst3.append(i * 10)
print(lst3)

lst4 = [i * 10 for i in range(1, 5) for j in range(1, 5)]
print(lst4)

for i in range(1, 5):
    for j in range(1, 5):
        lst4.append(i * j)

# 字典生成式
lst5 = ['张三', '李四', '王五']
dict1 = {i+1:lst5[i] for i in range(0,len(lst5))}
print(dict1)

for i in range(0,len(lst5)):
    dict1[i+1] = lst5[i]

# 集合生成式
set1 = {i * j for i in range(1, 4) for j in range(1, 4) if i == j}
print(set1)

for i in range(1, 4):
    for j in range(1, 4):
        if i == j:
            set1.add(i * j)

  四、课程总结

  课程总结

  • 元组是“不可变”列表
  • 序列是有序数据集合的统称
  • 集合是“没有VALUE”的字典

  元组(Tuple)

  • 元组(Tuple)是“不可变”的列表(List)
  • 元组使用小括号,列表使用方括号
  • tup1 = ('physics','chemistry',1997,2000)

  元组的读与写

  • 元组的读取方式与列表相同
  • 元组的元素在创建后不允许修改
  • 元祖允许使用“元组运算符”来创建新元组

  列表与元祖的区别与应用场景

列表元组
内容允许扩展内容不可变
内存存储动态变化创建后固定不变
效率较低效率最高
运行时数据需要变更时使用用于保存稳定不变的数据
保存天气数据、股市数据保存国家名、元素周期表

 

 

 

 

 

  认识“序列”

  • 序列(Sequence)是指“有序”的队列
  • 序列中元素顺序按添加顺序排列
  • 序列中的数据通过“索引”进行获取

  序列包含常用数据结构

  • 字符串(Str)
  • 列表(List)
  • 元组(Tuple)
  • 数字序列(Range)

  数字序列(Range)

  • range用于表示数字序列,内容不可变
  • 数字序列使用range()函数创建
  • 语法:r=range(0,100)#产生0-99数字序列

  序列类型的互相转换

  •  list() - 转换为列表
  • tuple() - 转换为元组
  • join()、str() - 转换为字符串

  什么是集合

  • 集合(set)是python中的内置数据结构
  • 集合可被看做是“没有value的字典”

  集合的特点

  • 集合元素是无序的
  • 集合元素不能重复
  • 集合是可变的
  • 集合允许数学运算
  • 集合石分散存储的

  集合的创建

  • 使用{}符号创建集合
  • 使用set()函数创建集合

  集合关系与数学运算

  • 交集(intersection)
  • 并集(union)
  • 差集(difference)

  三种内置生成式

  • 列表生成式
  • 字典生成式
  • 集合生成式

  步骤总结

  • python初识
  • 变量与字符串
  • 流程控制语句
  • 运算符
  • 可变类型的数据集合
  • 非可变类型的数据集合

转载于:https://www.cnblogs.com/miaophp/p/11210235.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值