笔记:Python 列表与元组编程题(练习题)

文章目录

  • 前言
  • 一、Python 列表与元组是什么?
  • 二、编程题
  • 总结


前言

欢迎阅读本编程练习题集,旨在帮助您加深对 Python 中列表(List)与元组(Tuple)的理解和应用。列表与元组是 Python 中常用的数据结构,能够有效地存储和操作数据,对于编写各种类型的程序至关重要。

通过完成这些编程练习,您将有机会加强对列表和元组的掌握,提高编程技能,并培养解决问题的能力。每个练习都设计得既具挑战性又有趣,涵盖了各种常见的应用场景和编程技巧。

我们鼓励您在解决每个问题时尝试不同的方法和思路,灵活运用 Python 的各种功能和语法。除了解决问题本身,还请思考每个问题的解决方案对于您的编程理解和技能提升的意义。

无论您是初学者还是有一定经验的程序员,这些练习都能为您提供有价值的学习和实践机会。希望您能够享受这个学习过程,并从中获得收获!


一、Python 列表与元组是什么?

Python 中的列表(List)和元组(Tuple)都是用于存储一组有序元素的数据结构,它们有一些相似之处,但也有一些重要的区别。

  1. 列表(List)

    • 列表是一种可变(Mutable)的数据类型,意味着您可以修改列表中的元素。
    • 列表使用方括号 [] 来表示,元素之间使用逗号分隔。
    • 列表中的元素可以是不同类型的数据,包括数字、字符串、甚至其他列表等。
    • 列表支持各种操作,如添加元素、删除元素、切片、合并列表等。
  2. 元组(Tuple)

    • 元组是一种不可变(Immutable)的数据类型,一旦创建,就不能修改元组中的元素。
    • 元组使用圆括号 () 来表示,元素之间同样使用逗号分隔。
    • 元组中的元素可以是不同类型的数据,与列表类似。
    • 元组通常用于存储不会改变的数据集合,如坐标、日期等。

虽然列表和元组在很多方面都很相似,但选择使用哪种取决于您的需求。如果您需要频繁地修改、添加或删除元素,那么列表可能更适合;而如果您需要创建一组不可变的数据,那么元组可能更合适。

二、编程题

  1. 列表与元组的基本操作

题目:定义一个列表和一个元组,分别包含5个不同的整数。然后尝试修改它们的第三个元素为新值10。

# 列表
my_list = [1, 2, 3, 4, 5]  # 定义一个包含5个整数的列表
my_list[2] = 10  # 将第三个元素修改为10
print(my_list)# 元组
my_tuple = (1, 2, 3, 4, 5)  # 定义一个包含5个整数的元组
# 尝试修改元组会引发TypeError
# my_tuple[2] = 10

分析:列表是可变的,可以通过索引来修改其中的元素;而元组是不可变的,因此尝试修改元组的元素会引发TypeError。

  1. 列表切片

题目:给定一个列表,从中间位置将其分为两部分,并将两部分交换位置。

# 列表切片
my_list = [1, 2, 3, 4, 5, 6]  # 定义一个包含6个整数的列表
middle = len(my_list) // 2  # 计算列表的中间位置
my_list = my_list[middle:] + my_list[:middle]  # 将列表从中间位置切片,并交换位置
print(my_list)

分析:使用列表切片操作,将列表分为两部分,然后重新组合。

  1. 列表方法应用

题目:给定一个列表,删除其中的偶数。

# 列表方法应用
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  # 定义一个包含10个整数的列表
my_list = [x for x in my_list if x % 2 != 0]  # 使用列表推导式筛选出所有奇数
print(my_list)

分析:通过列表推导式筛选出所有奇数,构建一个新的列表。

  1. 元组解包

题目:给定一个元组,将其解包为单独的变量。

# 元组解包
my_tuple = (1, 2, 3)  # 定义一个包含3个整数的元组
a, b, c = my_tuple  # 将元组解包为单独的变量
print(a, b, c)

分析:元组解包操作可以将元组中的每个元素分配给单独的变量。

  1. 列表排序

题目:给定一个包含整数的列表,将其按升序排序。

# 列表排序
my_list = [3, 1, 4, 1, 5, 9, 2, 6]  # 定义一个包含8个整数的列表
my_list.sort()  # 对列表进行升序排序
print(my_list)

分析:使用列表的sort()方法可以原地对列表进行排序。

  1. 元组连接

题目:给定两个元组,将它们连接成一个新的元组。

# 元组连接
tuple1 = (1, 2, 3)  # 定义一个包含3个整数的元组
tuple2 = (4, 5, 6)  # 定义一个包含3个整数的元组
new_tuple = tuple1 + tuple2  # 连接两个元组
print(new_tuple)

分析:元组可以通过加法操作符连接。

  1. 列表反转

题目:给定一个列表,将其反转。

# 列表反转
my_list = [1, 2, 3, 4, 5]  # 定义一个包含5个整数的列表
my_list.reverse()  # 反转列表
print(my_list)

分析:使用列表的reverse()方法可以原地反转列表。

  1. 元组切片

题目:给定一个元组,返回其第二个到倒数第二个元素的切片。

# 元组切片
my_tuple = (1, 2, 3, 4, 5)  # 定义一个包含5个整数的元组
slice_tuple = my_tuple[1:-1]  # 切片获取第二个到倒数第二个元素
print(slice_tuple)

分析:通过元组的切片操作获取指定范围内的元素。

  1. 列表复制

题目:给定一个列表,创建一个完全相同的副本。


# 列表复制
my_list = [1, 2, 3, 4, 5]  # 定义一个包含5个整数的列表
new_list = my_list[:]  # 使用切片操作创建一个新列表,作为原列表的副本
print(new_list)

分析:通过切片操作创建一个新的列表,这样做可以确保新列表是原列表的副本。

  1. 元组长度

题目:给定一个元组,返回其长度。

# 元组长度
my_tuple = (1, 2, 3, 4, 5)  # 定义一个包含5个整数的元组
length = len(my_tuple)  # 获取元组的长度
print(length)

分析:使用内置函数len()获取元组的长度。


  1. 将一个列表中的元素逆序排列。
  2. 计算一个列表中所有元素的和。
  3. 将两个列表合并为一个新的列表。
  4. 查找列表中的最大值和最小值。
  5. 判断一个元素是否在列表中。
  6. 删除列表中的重复元素。
  7. 计算一个列表中每个元素的平方并存储在新列表中。
  8. 将列表中的元素按照其长度进行排序。
  9. 求两个列表的交集。
  10. 求两个列表的并集。

答案:1. 将一个列表中的元素逆序排列。

# 1. 将一个列表中的元素逆序排列。# 定义一个列表
my_list = [1, 2, 3, 4, 5]# 使用列表切片实现逆序排列
reversed_list = my_list[::-1]# 输出逆序排列后的列表
print("原始列表:", my_list)
print("逆序排列后的列表:", reversed_list)

这段代码首先定义了一个列表 my_list,然后使用列表切片 [::-1] 将列表逆序排列,并将结果存储在 reversed_list 中。最后输出原始列表和逆序排列后的列表。

  1. 计算一个列表中所有元素的和。
# 2. 计算一个列表中所有元素的和。# 定义一个列表
my_list = [1, 2, 3, 4, 5]# 使用内置函数 sum() 计算列表中所有元素的和
total_sum = sum(my_list)# 输出列表中所有元素的和
print("列表中所有元素的和为:", total_sum)

这段代码使用了内置函数 sum() 来计算列表 my_list 中所有元素的和,并将结果存储在 total_sum 中,最后输出总和。

  1. 将两个列表合并为一个新的列表。
# 3. 将两个列表合并为一个新的列表。# 定义两个列表
list1 = [1, 2, 3]
list2 = [4, 5, 6]# 使用加法运算符将两个列表合并
merged_list = list1 + list2# 输出合并后的列表
print("合并后的列表:", merged_list)

这段代码使用了加法运算符将两个列表 list1list2 合并成一个新的列表 merged_list

  1. 查找列表中的最大值和最小值。
# 4. 查找列表中的最大值和最小值。# 定义一个列表
my_list = [3, 1, 7, 2, 8, 5]# 使用内置函数 max() 和 min() 分别找到列表中的最大值和最小值
max_value = max(my_list)
min_value = min(my_list)# 输出列表中的最大值和最小值
print("列表中的最大值为:", max_value)
print("列表中的最小值为:", min_value)

这段代码使用了内置函数 max()min() 来分别找到列表 my_list 中的最大值和最小值,并将结果存储在 max_valuemin_value 中,然后输出它们。

  1. 判断一个元素是否在列表中。
# 5. 判断一个元素是否在列表中。# 定义一个列表
my_list = [1, 2, 3, 4, 5]# 定义要查找的元素
element_to_find = 3# 使用 in 运算符判断元素是否在列表中
if element_to_find in my_list:print(f"{element_to_find} 在列表中.")
else:print(f"{element_to_find} 不在列表中.")

这段代码使用了 in 运算符来判断变量 element_to_find 是否在列表 my_list 中,并根据判断结果输出相应的信息。

  1. 删除列表中的重复元素。
# 6. 删除列表中的重复元素。# 定义一个列表
my_list = [1, 2, 2, 3, 3, 4, 5, 5]# 使用集合去除重复元素,然后转换回列表
unique_list = list(set(my_list))# 输出去重后的列表
print("去重后的列表:", unique_list)

这段代码先将列表 my_list 转换为集合,因为集合中不允许重复元素,然后再将集合转换回列表,这样就去除了重复元素。

  1. 计算一个列表中每个元素的平方并存储在新列表中。
# 7. 计算一个列表中每个元素的平方并存储在新列表中。# 定义一个列表
my_list = [1, 2, 3, 4, 5]# 使用列表推导式计算每个元素的平方
squared_list = [x**2 for x in my_list]# 输出存储平方后的新列表
print("每个元素的平方:", squared_list)

这段代码使用了列表推导式,遍历列表 my_list 中的每个元素,计算其平方并存储在新列表 squared_list 中。

  1. 将列表中的元素按照其长度进行排序。
# 8. 将列表中的元素按照其长度进行排序。# 定义一个列表
my_list = ["apple", "banana", "orange", "kiwi", "grape"]# 使用内置函数 sorted() 对列表中的元素按照长度进行排序
sorted_list = sorted(my_list, key=len)# 输出按长度排序后的列表
print("按长度排序后的列表:", sorted_list)

这段代码使用了内置函数 sorted() 对列表 my_list 中的元素按照长度进行排序,并将排序结果存储在 sorted_list 中。

  1. 求两个列表的交集。
# 9. 求两个列表的交集。# 定义两个列表
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]# 使用集合的交集操作符 & 求两个列表的交集
intersection = list(set(list1) & set(list2))# 输出两个列表的交集
print("两个列表的交集:", intersection)

这段代码使用了集合的交集操作符 & 来求两个列表 list1list2 的交集,并将结果存储在 intersection 中。

  1. 求两个列表的并集。
# 10. 求两个列表的并集。# 定义两个列表
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]# 使用集合的并集操作符 | 求两个列表的并集
union = list(set(list1) | set(list2))# 输出两个列表的并集
print("两个列表的并集:", union)

这段代码使用了集合的并集操作符 | 来求两个列表 list1list2 的并集,并将结果存储在 union 中。


总结

通过完成这些 Python 列表与元组的编程练习,我对列表和元组的特性和操作有了更深入的理解和掌握。在练习中,我学会了如何利用列表和元组的基本操作来解决各种问题,比如逆序排列、计算和、合并列表、查找最大值和最小值等。

通过练习,我发现了列表和元组在处理数据时的灵活性和便利性。列表的可变性使其在需要频繁修改、添加或删除元素时非常实用,而元组的不可变性则适用于存储不会改变的数据集合。在实际编程中,我会根据具体的需求选择使用列表或元组,以提高代码的效率和可读性。

除了掌握基本操作外,我还学会了使用列表推导式、集合操作符等高级技巧来简化代码和提高执行效率。这些技巧在处理大规模数据和复杂算法时尤为重要,能够帮助我编写更加优雅和高效的代码。

通过这些编程练习,我不仅提升了对 Python 编程语言的熟练程度,还培养了解决问题和分析思考的能力。我相信这些技能和经验将在今后的学习和工作中发挥重要作用,帮助我不断进步和成长。

在未来,我会继续深入学习 Python 中其他数据结构和算法,拓展自己的编程技能,为解决更加复杂的问题做好准备。我期待着探索更多有趣的编程领域,并将所学知识应用到实际项目中,为社会和科技发展做出贡献。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/2373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业级DDoS防护与内网文件安全防护:全方位策略与技术实践

在数字化转型的浪潮中,企业面临着日益严峻的网络安全威胁,其中DDoS(分布式拒绝服务)攻击与内网文件防护是两个至关重要的议题。本文将深入探讨企业如何通过综合运用多种技术和策略,构建起强大的DDoS防护体系与内网文件…

YOLOv9训练结果分析->mAP、Precision、Recall、FPS、Confienc、混淆矩阵分析

简介 这篇博客,主要给大家讲解我们在训练yolov9时生成的结果文件中各个图片及其中指标的含义,帮助大家更深入的理解,以及我们在评估模型时和发表论文时主要关注的参数有那些。本文通过举例训练过程中的某一时间的结果来帮助大家理解&#xf…

vue项目启动npm install和npm run serve时出现错误Failed to resolve loader:node-sass

1.常见问题 问题1:当执行npm run serve时,出现Failed to resolve loader: node-sass,You may need to install it 解决方法: npm install node-sass4.14.1问题2:当执行npm run serve时,出现以下错误 Fa…

复杂算子onnx导出(2): 将graph写入到onnx

前文通过自定义导出实现了trace, 然后将输入输出节点连接起来就形成了graph, 接下来利用得到的graph写入到onnx文件中。通过onnx.helper就可以构建出一个onnx文件,并且保存下来。 1. onnx.helper 示例 onnx结构中,包括了nodes,initializer ,inputs,outputs,graph。然后指定…

水牛社靠谱吗,水牛社可以当做副业来做吗?

水牛社这个平台是否靠谱,能否作为副业的选择,一直是网友们热议的话题。实际上,水牛社是一个集合了众多网上赚钱活动任务和提供资源项目教程的综合性平台,它并非只局限于某一特定的项目,而是展现出多样化的特点。随着网…

SpringCloud系列(11)--将微服务注册进Eureka集群

前言:在上一章节中我们介绍并成功搭建了Eureka集群,本章节则介绍如何把微服务注册进Eureka集群,使服务达到高可用的目的 Eureka架构原理图 1、分别修改consumer-order80模块和provider-payment8001模块的application.yml文件,使这…

spring boot 基础案例【1】在页面上打印hellow world

1.在页面上打印hellow world 要在 Spring Boot 中打印 “Hello World” 并理解其代码,你可以创建一个简单的 Spring Boot 应用。这里,我将展示一个基本的示例并逐行解释代码的功能。 1.1 创建 Spring Boot 应用 首先,确保你已经安装了 Jav…

[vite] ts写配置根目录别名

参考:配置 Vite | Vite 写对象的形式吧 import { defineConfig } from vite import vue from vitejs/plugin-vue import path from path// https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],resolve: {alias: {"": path.resolve(__dirname…

MySQL的root用户无法远程连接

默认root用户只允许本地连接,所以需要修改mysql库中user表中名为root的用户的host为“%” select Host,User from user;UPDATE mysql.user SET host % WHERE user root; FLUSH PRIVILEGES;

JAVA:Kettle 强大的开源ETL工具

请关注微信公众号:拾荒的小海螺 1、简述 Kettle(Pentaho Data Integration):强大的开源ETL工具Kettle,又称作Pentaho Data Integration,是一款流行的开源ETL(Extract, Transform, Load&#x…

字符长、看不懂、费率飙升|Runes协议上线后发生了什么?

作者:比特里里 X/推:lilyanna_btc 1、字符数长了,单词都完整了,反而看不懂了 由于 Runes 协议的字符长度限制,大部分的票都在 13 个字符及以上,人名、域名、slogan,各类玩法都出来了。很多人适…

情感识别——情感计算的模型和数据集调查

概述 情感计算指的是识别人类情感、情绪和感觉的工作,已经成为语言学、社会学、心理学、计算机科学和生理学等领域大量研究的主题。 本文将概述情感计算的重要性,涵盖思想、概念和方法。 情感计算是皮卡德于 1997 年提出的一个想法,此后出…

线性模型算法

简介 本文章介绍机器学习中的线性模型有关内容,我将尽可能做到详细得介绍线性模型的所有相关内容 前置 什么是回归 回归的就是整合+预测 回归处理的问题可以预测: 预测房价 销售额的预测 设定贷款额度 可以根据事物的相关特征预测出对…

什么是关键字驱动测试?关键字驱动测试是如何实现的?

什么是关键字驱动测试? 关键字驱动测试 (KDT) 是测试自动化中的一种脚本技术,其中测试用例指令与实际测试脚本逻辑分开。它利用一组预定义的关键字来表示要在被测应用程序 (AUT) 上执行的操作。这些关键字…

spring boot的项目+nginx,怎么预防XSS攻击

在一个结合了Spring Boot和Nginx的项目架构中,防御跨站脚本攻击(XSS)需要在两个层面上进行综合防护:应用层(Spring Boot应用)和服务器层(Nginx)。这里是一些具体的策略和步骤&#x…

【C++风云录】地理信息处理与可视化:开源工具助力地理科学发展

构建智慧地图的利器:地理信息系统与地图可视化技术综述 前言 地理信息系统(Geographic Information System,简称GIS)和地图可视化技术是现代地理科学以及相关领域研究的重要工具和方法。本文将介绍几个常用的地理信息处理和地图…

BBS前后端混合项目--03

展示 static/bootstrp # bootstrap.min.css /*!* Bootstrap v3.4.1 (https://getbootstrap.com/)* Copyright 2011-2019 Twitter, Inc.* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*//*! normalize.css v3.0.3 | MIT License | github.com/n…

XiaodiSec day021 Learn Note 小迪安全学习笔记

XiaodiSec day021 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 javaweb 2024.01.30 0:11 知识点 javaWeb 相关 JWT 越权 开始 知识点 1 webgoat 在 github 中 8.22 版本 不会全讲,只是挑一部分 path traversal 第二关 上传到指定位…

Redis 核心知识点(持续更新中)

Redis 核心知识点(持续更新中) Redis单线程IO多路复用原理Redis缓存穿透、缓存雪崩、缓存击穿问题Redis与数据库双写不一致问题基于Redis实现分布式锁的的应用场景Redis持久化方式Redis内存淘汰机制Redis删除策略Redis主从复制、哨兵、集群Redis集群分片…

Qt | 鼠标事件第四节

Qt | 事件第一节Qt | 事件第二节