经过上节课对于列表的初步认识,本节课引入了元组,集合,字典等具有相似度的数据类型,将他们与列表进行比较并总结出其特点与操作功能。

元组

元组——被戴上紧箍咒的列表
1.元组与列表的对比:
元组与列表的区别为列表的长度是没有限制的,但是元组的长度是固定的,并且列表可以做增加,删除,修改的操作,但是元组由于长度固定并不可以作以上操作,只能够查看元组中的元素。其他特性与列表相同,其中存储的数据为值,并且可以为多种书记类型(可重复),可排序,并且可以索引与切片。

2.元组的创建、删除、与特性
1)元组的定义:turple = (),定义单个值的元组:turple = (‘westos’,),定义多个值的元组:turple = (‘zzq’ ,‘westos’ , ‘pc’)
2)元组的特性:连接操作符,重复操作符,成员操作符,索引,切片。

特性:对元组分别赋值,引申对多个变量,也可通过元组方式分别赋值

python 元组 集合 课程思政 python集合列表元组区别_python 元组 集合 课程思政

例题:求加权平均数

python 元组 集合 课程思政 python集合列表元组区别_数据类型_02

3.元组中环境变量的交换

python 元组 集合 课程思政 python集合列表元组区别_数据类型_03


python 元组 集合 课程思政 python集合列表元组区别_python 元组 集合 课程思政_04


4.命名元组

命名元组是一个类:

python 元组 集合 课程思政 python集合列表元组区别_python_05

集合

1.集合与列表的对比
集合存储的数据为键(不可重复,如遇重复的值只保留一个)可以存同一种不可变的数据类型,可以增删改查,不可排序并且,不可读取,无索引无切片,空集合表示时用set()或{}。添加操作为add()。

2.集合的操作与特性
集合是一个无序,不重复元素序列。1,2,2,4,4,3 = 1,2,4,3
1)集合的创建:
使用大括号{},或者set()函数创建集合。
**注意:创建空集合必须用set(),而不是{},{}是用来创建一个空字典。

3.集合的内置属性

python 元组 集合 课程思政 python集合列表元组区别_字符串_06


4.实例:(1)列表去重

方法一:依次遍历并判断

python 元组 集合 课程思政 python集合列表元组区别_元组_07


方法二:通过集合特性处理

python 元组 集合 课程思政 python集合列表元组区别_python_08


(2)明明的随机数

生成100个1到1000范围内的随机数,并且进行去重并排列操作。

python 元组 集合 课程思政 python集合列表元组区别_字符串_09

字典

1.字典的特性

字典是另一种可变容器模型,且可存储任意类型对象。

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

格式表述:

d = {key1:value,key2:value2}

d = {‘Z’:‘字’,‘D’:’典‘}

2.字典的创建与删除

1)简单字典创建

python 元组 集合 课程思政 python集合列表元组区别_字符串_10


2)内建方法:fromkeys

字典中的key有相同的value值,默认(未输入时)为none。

python 元组 集合 课程思政 python集合列表元组区别_字符串_11

3)zip间接创建

python 元组 集合 课程思政 python集合列表元组区别_python 元组 集合 课程思政_12

5.字典的内建方法

python 元组 集合 课程思政 python集合列表元组区别_数据类型_13

6.利用字典实现python的switch语句

python 元组 集合 课程思政 python集合列表元组区别_数据类型_14

7.字典一键多值问题的实现

collections.defaultdict类,本身提供了默认值的功能, 默认值可以是整形,列表,集合等.

需求: 我们想要一个能将键(key)映射到多个值的字(即所谓的一键多值字典)

解决方案:

1). 字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键映射到多个值,需要将这些多个值保存到容器(列表或者集合)中。

2). 利用collections模块中的defaultdict类自动初始化第一个值,这样只需关注添加元素.

python 元组 集合 课程思政 python集合列表元组区别_数据类型_15

8.内置数据结构总结
可变数据类型:
可以增删改。可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

不可变数据类型:
不可以增删改。python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象。

本节问题

1.有一个列表,其中包括 10 个元素,例如这个列表是[1,2,3,4,5,6,7,8,9,0],要求将列表中的每个元素一次向前移动一个位置,第一个元素到列表的最后,然后输出这个列表。最终样式是[2,3,4,5,6,7,8,9,0,1]

2.按照下面的要求实现对列表的操作:
1). 产生一个列表,其中有 40 个元素,每个元素是 0 到 100 的一个随机整数
2). 如果这个列表中的数据代表着某个班级 40 人的分数,请计算成绩低于平均分的学生人数
3). 对上面的列表元素从大到小排序并输出

python 元组 集合 课程思政 python集合列表元组区别_python 元组 集合 课程思政_16

3.如果将一句话作为一个字符串,那么这个字符串中必然会有空格(这里仅讨论英文),比如"How are you.",但有的时候,会在两个单词之间多大一个空格。现在的任务是,如果一个字符串中有连续的两个空格,请把它删除

python 元组 集合 课程思政 python集合列表元组区别_python 元组 集合 课程思政_17