元组是不可变的列表(不支持增删改的操作),元组是有序的(支持下标操作)
元组是容器型数据类型,将()作为容器的标志,多个元素之间用逗号,隔开
元组中的元素的要求和列表一样
1)空元组:()
2)单个元素的元组:
Tuple2 = (10,)
print(tuple2, type(tuple2)) # (10,)
3)多个元素的元组
tuple4 = (100, 200, 300)
tuple5 = 100, 200, 300
1.获取单个元素
names = '生活大爆炸', '权利的游戏', '吸血鬼日记', '破产姐妹', '尼基塔'
print(names[-2])
2.切片
names = '生活大爆炸', '权利的游戏', '吸血鬼日记', '破产姐妹', '尼基塔'
print(names[1::2])
3.遍历
for 变量 in 元组
4.其他方式:
a.
touple6 = (10, 20, 30)
x, y, z = touple6
print(x, y, z)
num1, num2 = 100, 200 # num1, num2 = (100,200)
b. 变量1,变量2,变量3,… =元组
前面的变量的个数小于元组中元组的个数,并且有且只有一个变量前有*
带变量最后的取值为不带的变量取后剩下的
person = ('余婷', '女', 18, 100, 89, 50)
name, *gender, age, num = person
print(name, gender, age, num)
a.需要同时保存多个数据
b.多个数据的意义不同(需要做区分)
2.什么是字典(dict)
字典是容器型数据类型,将{}作为容器的标志,多个元素用逗号,隔开,字典元素都是键值对
{键1: 值1, 键2:值2, }
字典是可变的,支持增删改,字典是无序的,不支持下标操作
字典对元素的要求:必须所有元素都是键值对
键 - 是不可变的,是唯一的,一般是字符串
值 - 任何类型的数据,可以重复
字典在保存数据的时候,真正保存的是值,键是用来对值进行区分和说明的
1.获取单个元素对应的值
a. 字典[key] - key不存在会报错
b. 字典.get(key) - key不存在时候不报错,报None
c. 字典.get(key, 默认值) - key不存在时候不报错,并且返回默认值
2 遍历
for 变量 in 字典
循环体
这里变量取到的是字典中所有的key
dog = {'name': '财财', 'age': 3, 'breed': '土狗', 'gender': '母', 'weight': 10}
for x in dog:
print(x, dog[x])
练习:声明一个变量,同时保存四个学生的信息,每个学生需要包含学生的姓名、年龄、电话、成绩,统计四个学生中未成年人的个数
students = [{'name': 'zhang', 'age': 19, 'tel': 110, 'score': 70}, {'name': 'zhang', 'age': 13, 'tel': 110, 'score': 70}, {'name': 'zhang', 'age': 17, 'tel': 110, 'score': 70}, {'name': 'zhang', 'age': 190, 'tel': 110, 'score': 70}]
count = 0
for x in students:
if x['age'] < 18:
count += 1
print('未成年人个数', count)
语法一:
字典[key] = 新值
改:如果key存在,就将key对应的值修改成指定的值
增:如果key不存在,就以"key: 新值"的形式添加一个键值对
语法二:
添加键值对 :字典.setdufault(键,值)
movie = {'name': '西游记', 'time': '1978-10-23', 'director': '吴承恩'}
print(movie)
movie['time'] = '1989-10-2'
print(movie)
movie['score'] = 9.0
print(movie)
movie.setdefault('type', '神话')
print(movie)
1.del
Del 字典[key] - 删除指定key对应的键值对(key不存在会报错)
2.pop
字典.pop(key) - 取出字典中指定key对应的值,并返回取出的值
del movie['director']
print(movie)
value = movie.pop ('type')
print(movie)
字典不支持加法和乘法运算
1.比较运算:
字典不可以比较大小,只能比较相等
print({'a': '1', 'b': '2'} == {'b': '2', 'a': '1'}) # True
2.in 和 not in
数据 in 字典 - 判断字典中是否存在指定的key
数据 not in 字典 - 判断字典中是否不存在指定的key
cat = {'name': '花花', 'age': 2, 'colour': '白色'}
print('name' in cat) # True
print('花花' in cat) # False
3.相关函数
len(字典) - 统计字典中键值对的个数
dict(数据) - 将指定的数据转换成字典
此处对数据的要求:
1.是容器型数据类型
2.数据中的元素是有且只有两个元素的容器
3.小容器中的第一个元素是不可变的
字典转换成其他数据类型:
bool(字典) - 空字典会转换成false,其他都输True
只有数字类型和小部分字符串能转换成数字,其他不行,字典也不行
list(字典) - 把字典所有的key转换成列表元素
touple(字典) - 把字典所有的key转换成元组元素
print(len(cat))
print(dict([[42, 12], [235, 6346]])) # {42: 12, 235: 6346}
print(list(cat))
1、 字典.clear() - 清空字典
2、字典.copy() - 复制字典并产生一个新的字典并返回
3、dict.fromkeys() - 创建字典
dict.fromkeys(序列) - 将序列中的元素都作为字典的key,字典的值为none
dict.fromkeys(序列, 值) - 将序列中的元素都作为字典的key,字典的值都是指定的值
stu = dict.fromkeys(['name', 'age', 'gender', 'tel', 'address', 'score'])
print(stu)
4.items, keys, values
print(cat.keys()) # 获取字典所有的key返回一个容器,这个容器不是列表
print(cat.values()) # 获取字典所有的值返回一个容器,这个容器不是列表
print(cat.items()) #获取字典所有的键值对返回一个容器,这个容器不是列表,容器中的元素是元组,每个元组对应一个键值对
update
字典.update(序列) - 用序列生成的字典去更新原字典(更新方式:不存在就添加,存在就修改)
dict4 = {'a', '10', 's', '35'}
dict4.update({'a', 100, 'for'})
集合是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号,隔开
元素是普通数据不是键值对
{元素1, 元素2, 元素3,…}
集合是可变的,支持增删改
集合是无序的
集合对元素的要求:集合中的元素是不可变并且唯一的,列表不能作为集合中的元素
可以利用集合元素的唯一性进行去重操作
空集合:
empty = set() # {}是空字典
非空集合
set1 = {1, 123, 524}
1查
集合没有办法直接获取单个元素,只能遍历
‘’’
for 变量 in 集合
循环体
变量取到的就是集合中的每个元素
‘’’
nums = {42, 525, 563, 56745, 575}
for x in nums:
print(x)
2增
‘’’
方法1
a.集合.add(元素)
b.集合.update(序列) - 将序列中元素全部添加到集合中,序列中元素必须是不可变的
‘’’
nums.add(1000)
print(nums)
nums.update((1, 23, 35))
print(nums)
3删
‘’’
集合.remove(元素) - 删除集合中指定的元素(元素不存在会报错)
集合.discard(元素) - 删除集合中指定的元素(元素不存在不会报错)
‘’’
4改 : 集合无法修改元素
1 Python中的集合支持数学集合运算
2并集 |
3 差集 - 集合1 - 集合2 : 集合1中除了集合2剩下的部分
4对称差集^ 去掉两个集合公共部分后剩下的部分
5真子集 >,<
集合1 > 集合2 - 判断集合2是否是集合1的真子集
集合1 < 集合2 - 判断集合1是否是集合2的真子集