python--实验5 列表和元组

知识回顾:

组合数据类型

  • 定义:可以将多个数据组织起来的数据结构。
  • 分类:根据数据的组织方式,Python 中的组合数据类型主要有三类:
    1. 序列类型(Sequence Types):如列表(list)、字符串(str)、元组(tuple)等。
    2. 集合类型(Set Types):如集合(set)和冻结集合(frozenset),用于存储无序的唯一元素。
    3. 映射类型(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. 有四个数字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}")

  1. (基础题)过滤敏感词: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)} 次。")
  1. (提高题)生成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}")

总结

  1. 序列类型分类:区分了可变数据类型(列表、字典、集合)和不可变数据类型(字符串、数字、元组)。

  2. 列表(List)

    • 创建列表的多种方式。
    • 列表推导式。
    • 列表操作和常用函数与方法,如appendcountextendindexinsertpopremovereversesort等。
  3. 元组(Tuple)

    • 元组的不可变性和只读特性。
    • 创建元组的多种方式。
    • 元组操作和应用场景,如表达固定数据、函数多返回值、循环遍历。
  4. 列表与元组的比较:总结了列表和元组在索引、切片、拼接、重复、成员检查、长度和迭代遍历方面的相同点,以及它们在语法、元素分隔、可变性、数据类型多样性方面的差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值