知识回顾:
组合数据类型
- 定义:可以将多个数据组织起来的数据结构。
- 分类:根据数据的组织方式,Python 中的组合数据类型主要有三类:
- 序列类型(Sequence Types):如列表(list)、字符串(str)、元组(tuple)等。
- 集合类型(Set Types):如集合(set)和冻结集合(frozenset),用于存储无序的唯一元素。
- 映射类型(Mapping Types):如字典(dict),通过键值对存储数据。
1.序列类型(Sequence)
- 特点:序列中的每个值都有一个对应的位置值,即索引。
- 索引:支持正向递增索引和反向递减索引。
- 切片:可以对序列进行切片操作,截取序列的一部分。
- 双向索引:Python 中的序列支持从两个方向进行索引。
2.可变与不可变数据类型
- 可变数据类型(Mutable Data Types):
- 列表(List)
- 字典(Dictionary)
- 集合(Set)
- 特点:如果 value 值改变,内存地址不变。
- 不可变数据类型(Immutable Data Types):
- 字符串(String)
- 数字(Number)
- 元组(Tuple)
- 特点:如果 value 值改变,内存地址也随之改变。
3.列表(List)
- 创建:使用
[]
或list()
创建列表。 - 可包含多种数据类型的变量,可以嵌套。
3.1列表(List)
- 定义:Python 中的列表是一种可变的序列类型,可以存储不同类型的元素,包括其他列表。
3.2创建列表
- 使用空括号
[]
创建空列表。 - 使用
list()
函数或将元组或字符串转换为列表。
3.3列表推导式
- 使用表达式、范围或条件来创建列表。
3.4列表操作
- 列表支持各种操作,如添加、删除、修改元素等。
3.4.1列表的常用函数与方法
-
函数:
cmp(list1, list2)
:比较两个列表的元素。len(list)
:获取列表元素个数。max(list)
:返回列表元素最大值(注意:数据类型需相同)。min(list)
:返回列表元素最小值。list(seq)
:将元组或字符串转换为列表。
-
方法:
append(obj)
:在列表末尾添加新的对象。count(obj)
:统计某个元素在列表中出现的次数。extend(seq)
:在列表末尾一次性追加另一个序列中的多个值。index(obj)
:找出某个值在列表中第一个匹配项的索引位置。insert(index, obj)
:将对象插入列表指定位置。pop([index=-1])
:移除列表中的一个元素,并返回该元素的值。remove(obj)
:移除列表中某个值的第一个匹配项。reverse()
:反向列表中的元素。sort(cmp=None, key=None, reverse=False)
:对原列表进行排序。-
函数:
cmp(list1, list2)比较两个列表的元素
len(list)列表元素个数
max(list)返回列表元素最大值(注意如果数据类型不同,无法比较)
min(list)返回列表元素最小值
list(seq)将元组转换为列表
方法:
list.append(obj)在列表末尾添加新的对象
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值
list.index(obj)从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)将对象插入列表
list.pop([index=-1]) 移除列表中的一个元素,并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort(cmp=None, key=None, reverse=False)对原列表进行排序
3.5列表示例:10个100以内的数求最大值
3.6列表与其他数据类型的比较
- 列表与字符串在索引、切片、拼接、重复、成员检查、长度和迭代遍历方面具有相似性,但列表使用
[]
表示,元素用逗号分隔,且列表是可变的,可以包含多种数据类型的元素。
4.元组(Tuple)
- 定义:元组是一种不可变的序列类型,一旦创建就不能更改其内容。元组被称为只读列表。
4.1创建元组
- 使用圆括号
()
来创建元组,即使元组中只有一个元素,也需要在元素后面加上逗号。 - 使用
tuple()
函数将其他序列类型(如列表或字符串)转换为元组。
4.2元组推导式
- 元组也可以使用推导式进行创建,类似于列表推导式,但是使用圆括号。
4.3元组操作
- 元组是不可变的,这意味着你不能修改元组中的元素,但可以遍历、连接或与其他序列类型进行比较。
4.4元组的应用场景
- 表达固定数据:元组适用于存储不应改变的数据集合。
- 函数多返回值:函数可以返回一个元组,从而允许同时返回多个值。
- 多变量同步赋值:元组可以用于同步赋值,即在一行代码中同时为多个变量赋值。
- 循环遍历:可以遍历元组中的元素。
4.5元组示例:输入某年某月某日,判断这一天是这一年的第几天?
- 代码:
4.6列表和元组的共性与差异
- 共性:
- 索引、切片、拼接(+)、重复(*)、成员(in)、长度(len)、for 循环迭代遍历。
- 差异:
- 列表使用
[]
,元组使用()
。 - 列表元素用逗号分隔,元组在定义时需要至少一个元素后跟逗号。
- 列表是可变的,元组是不可变的。
- 列表可以包含多种数据类型的元素,元组通常用于存储同质的数据。
- 列表使用
实验5列表与元组
1.实验目的
掌握Python中的元组类型及其应用
掌握Python中的列表类型及其应用
掌握python的编程技巧,学会用程序逻辑解决需求
2.实验环境
Windows 7以上版本的操作系统,Python 3.5以上编程环境。
3.实验内容
- 有四个数字1、2、3、4,能组成多少个互不相同且数字不重复的三位数。
代码:
# 定义数字集合
digits = [1, 2, 3, 4]
# 创建一个空列表来存储结果
three_digit_numbers = []
# 使用嵌套循环来生成所有可能的三位数
for i in range(4): # 百位有4种选择
for j in range(4): # 十位有4种选择,但要排除已经被选为百位的数字
if digits[i] != digits[j]:
for k in range(4): # 个位有4种选择,但要排除已经被选为百位和十位的数字
if digits[k] != digits[i] and digits[k] != digits[j]:
# 构造三位数并添加到列表中
number = (digits[i] * 100) + (digits[j] * 10) + digits[k]
three_digit_numbers.append(number)
# 打印结果
print("所有可能的三位数有:", three_digit_numbers)
print("总共有:", len(three_digit_numbers), "个")
2、(基础题)已知字符串str = '零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾',从命令行输入四个连续的中文数字,将输入的数据转换成十进制数字表示,
代码:
# 已知字符串,包含中文数字
chinese_numbers = '零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾'
# 从命令行输入四个连续的中文数字
input_str = input("请输入四个连续的中文数字:")
# 检查输入是否有效
if len(input_str) != 4 or input_str not in chinese_numbers:
print("输入错误,请输入四个连续的中文数字")
else:
# 计算中文数字在字符串中的索引
index = chinese_numbers.index(input_str)
# 将索引转换为十进制数字
# 由于 '零' 是索引0,我们需要对结果加1
decimal_number = index // 2 + 1
# 打印结果
print(f"输入的中文数字 '{input_str}' 对应的十进制数字是:{decimal_number}")
- (基础题)过滤敏感词:sensitive= ['最佳', '独一无二', '一流', '仅此一次', '顶级', '顶尖', '尖端', '极品', '极佳', '绝佳', '绝对', '终极', '极致', '首个', '首选', '独家', '首发', '首次', '首款', '金牌', '名牌', '王牌', '领袖', '领先', '领导', '缔造者', '巨星', '掌门人', '至尊', '巅峰', '奢侈', '资深', '之王', '王者', '冠军','第一', '国家级', '最高级']
营销运营敏感词库如上列表,请输入一句话,统计其敏感词出现的次数。
代码:
# 定义敏感词列表
sensitive_words = ['最佳', '独一无二', '一流', '仅此一次', '顶级', '顶尖', '尖端', '极品', '极佳', '绝佳', '绝对', '终极', '极致', '首个', '首选', '独家', '首发', '首次', '首款', '金牌', '名牌', '王牌', '领袖', '领先', '领导', '缔造者', '巨星', '掌门人', '至尊', '巅峰', '奢侈', '资深', '之王', '王者', '冠军', '第一', '国家级', '最高级']
def count_sensitive_words(text):
# 将输入文本转换为统一的格式,例如全为中文字符,以避免编码问题
text = text.strip()
# 用于计数的变量
count = 0
# 遍历敏感词列表,检查每个敏感词是否在文本中
for word in sensitive_words:
count += text.count(word)
return count
# 从用户那里获取输入
user_input = input("请输入一句话:")
# 统计并打印敏感词出现的次数
print(f"敏感词在输入文本中出现了 {count_sensitive_words(user_input)} 次。")
- (提高题)生成4位网站验证码 (数字(0~9) 小写 大写)一般登录网站或注册用户时,网站会要求输入验证码,请模拟生成4位验证码
要求:4位数字不能重复
代码:
import random
import string
def generate_verification_code(length=4):
# 定义可能的字符集合:数字0-9、小写字母a-z、大写字母A-Z
characters = string.digits + string.ascii_letters
# 使用random.choice从字符集合中随机选择字符
code = ''.join(random.choice(characters) for _ in range(length))
return code
# 生成并打印4位验证码
verification_code = generate_verification_code()
print(f"生成的4位验证码是:{verification_code}")
总结
-
序列类型分类:区分了可变数据类型(列表、字典、集合)和不可变数据类型(字符串、数字、元组)。
-
列表(List):
- 创建列表的多种方式。
- 列表推导式。
- 列表操作和常用函数与方法,如
append
、count
、extend
、index
、insert
、pop
、remove
、reverse
、sort
等。
-
元组(Tuple):
- 元组的不可变性和只读特性。
- 创建元组的多种方式。
- 元组操作和应用场景,如表达固定数据、函数多返回值、循环遍历。
-
列表与元组的比较:总结了列表和元组在索引、切片、拼接、重复、成员检查、长度和迭代遍历方面的相同点,以及它们在语法、元素分隔、可变性、数据类型多样性方面的差异。