本文为笔记干货,版权来源Stream_,建议配合其他教程使用,增添了一些自己的思考和实验。
建议知识获取https://github.com/jackfrued/Python-100-Days/tree/master/Day01-15 本文为该来源的笔记
一、元组
元组和列表不同,列表可更改,元组不可更改,用于返回多值,获取安全的线程
- 创建元组
t = ('Tom', 18, True, 'America')
注意是括号,列表是方括号,同列表一样可以直接访问
- 将元组变为列表
t = ('Tom', 18, True, 'America')
person = list(t)
- 将列表变为元组
fruits_list = ['apple', 'banana', 'orange']
fruits_tuple = tuple(fruits_list)
二、集合
不允许有重复元素,而且可以进行交集、并集、差集等运算。
用的是大括号
set1 = {1, 2, 3, 3, 3, 2}
print(set1)
# {1, 2, 3}
- update()
将集合或元素添加进集合里,如果有重复的会忽略
(注意和add有区别,update将拆分为最小单元,例中把morning拆分为每一个字母,可以和下边的add对比看)
bSet=set('good')
bSet.update('morning')
# {'d', 'g', 'i', 'm', 'n', 'o', 'r'}
- add()
将元素添加进集合里,如果有重复的会忽略
(注意和update有区别,add将其看做一个整体元素,如例题中的morning,可以和上边的update对比看)
aSet=set('good')
aSet.add('morning')
# {'d', 'g', 'morning', 'o'}
- discard()
删除指定元素,如果未找到会报错
set2 = set(range(1, 10))
set2.discard(5)
# {1, 2, 3, 4, 6, 7, 8, 9}
- 集合的交集、并集、差集、对称差运算
set1 = {1, 2, 3, 3, 3, 2}
# {1, 2, 3}
set2 = set(range(1, 10))
# {1, 2, 3, 4, 5, 6, 7, 8, 9}
# 交集
print(set1 & set2)
# print(set1.intersection(set2))
# {1, 2, 3}
# 并集
print(set1 | set2)
# print(set1.union(set2))
# {1, 2, 3, 4, 5, 6, 7, 8, 9}
# 差集,set1里的元素去除掉set2里的元素
print(set1 - set2)
# print(set1.difference(set2))
# 结果为:set()
# 对称差运算,两个集合中只属于一个集合的元素,但是不属于另一个集合的元素
print(set1 ^ set2)
# print(set1.symmetric_difference(set2))
# {4, 5, 6, 7, 8, 9}
- 子集和超集
set1 = {1, 2, 3, 3, 3, 2}
set2 = set(range(1, 10))
# set2是否是set1的子集,是否set2的每一个元素,set1中都有
print(set2 <= set1)
# print(set2.issubset(set1))
# False
# set1是否是set2的超集,是否set2的每一个元素,set1中都有
print(set1 >= set2)
# print(set1.issuperset(set2))
# False
三、字典
字典是另一种可变容器模型,它可以存储任意类型对象,
与列表、集合不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。
- 创建字典
key和value值一一对应,如果有字符串型的,直接用所有地方都要加双引号
scores = {'Cat': 95, 'Dog': 78, 'Monkey': 82}
- 更新字典中的元素
注意Cat前后是有引号的
scores['Cat'] = 65
- .update()
添加新的key-value对应键值对,注意这里是没有字符串的双引号的
scores = {'Cat': 95, 'Dog': 78, 'Monkey': 82}
scores.update(Mouse=67, Pig=85)
# {'Cat': 95, 'Dog': 78, 'Monkey': 82, 'Mouse': 67, 'Pig': 85}
- .get()
获取指定key的value值
scores = {'Cat': 95, 'Dog': 78, 'Monkey': 82}
# 如果get有确定的键值对,直接输出value值
print(scores.get('Cat'))
# 95
# 如果get没有确定的键值对,返回None
print(scores.get('Mouse'))
# None
# 设置默认值,如果没找到指定的key值,则返回默认值,但是执行完这条语句,原字典不会发生改变
print(scores.get('Mouse', 60))
# 60
#设置默认值,如果找到了指定的key值,不管默认值,直接返回正确的值
print(scores.get('Cat', 60))
# 95
- .popitem()
删除末尾元素,没有参数,如果只剩一个元素,接着使用popitem,则字典会变为空字典
scores = {'Cat': 95, 'Dog': 78, 'Monkey': 82}
print(scores.popitem())
# ('Monkey', 82)
print(scores)
# {'Cat': 95, 'Dog': 78}
print(scores.popitem())
# ('Dog', 78)
print(scores)
# {'Cat': 95}
print(scores.popitem())
# ('Cat', 95)
print(scores)
# {}
- .pop()
删除括号内指定key的key-value键值对,如果没找到,程序会报错,但可以指定默认值
scores = {'Cat': 95, 'Dog': 78, 'Monkey': 82}
print(scores.pop('Cat'))
# 95
print(scores)
# {'Dog': 78, 'Monkey': 82}
print(scores.pop('Mouse',60))
# 60
print(scores)
# {'Cat': 95, 'Dog': 78, 'Monkey': 82}
- .clear()
清空字典
scores = {'Cat': 95, 'Dog': 78, 'Monkey': 82}
scores.clear()
print(scores)
# {}