【数据分析基础】实验一 Python运算符、内置函数、序列基本用法

一、实验目的

  1. 熟练运用Python运算符。
  2. 熟练运用Python内置函数。
  3. 掌握Python的基本输入输出方法。
  4. 了解lambda表达式作为函数参数的用法。
  5. 掌握列表、元组、字典、集合的概念和基本用法。
  6. 了解Python函数式编程模式。

二、实验内容:

1. 在命令模式测试如下命令,通过结果理解并熟练掌握以下内置函数:

(1)程序代码:

>>> from random import randint

>>> a = [randint(1, 100) for i in range(10)]

>>> print(max(a), min(a), sum(a))

100 27 664

>>> sum(a)/len(a)

66.4

(2)运行结果(截图):

(1)程序代码:

>>> x = list(range(11))

>>> import random

>>> random. shuffle(x)

>>> x

[0, 9, 6, 2, 1, 10, 8, 3, 5, 4, 7]

>>> sorted(x)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> y = ['aaaa', 'bc', 'd', 'b', 'ba']

>>> sorted(y, key=lambda item: (len(item), item))

['b', 'd', 'ba', 'bc', 'aaaa']

>>> sorted(x, key=lambda item: len(str(item)), reverse=True)

[10, 0, 9, 6, 2, 1, 8, 3, 5, 4, 7]

>>> sorted(x, key=str)

[0, 1, 10, 2, 3, 4, 5, 6, 7, 8, 9]

>>>

(2)运行结果(截图):

(1)程序代码:

>>> list(map(str, range(5)))

['0', '1', '2', '3', '4']

>>> def add5(v):

...     return v+5

...

>>> list(map(add5, range(10)))

[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>> def add(x, y):

...     return x+y

...

>>> list(map(add, range(5), range(5, 10)))

[5, 7, 9, 11, 13]

>>>

(2)运行结果(截图):

  

(1)程序代码:

>>> range(5)

range(0, 5)

>>> list()

[]

>>> list(range(1, 10, 2))

[1, 3, 5, 7, 9]

>>> list(range(9, 0, -2))

[9, 7, 5, 3, 1]

(2)运行结果(截图):

    

(1)程序代码:

>>> list(zip('abed', [1, 2, 3]))

[('a', 1), ('b', 2), ('e', 3)]

>>> list(zip('123', 'abe', ',.!'))

[('1', 'a', ','), ('2', 'b', '.'), ('3', 'e', '!')]

>>> x = zip('abcd', '1234')

>>> list(x)

[('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]

(2)运行结果(截图):

2. 编写程序,输入任意大的自然数,输出各位数字之和。

参考代码:

(1)程序代码:

num = input('请输入一个自然数:')
print(sum(map(int, num)))

(2)运行结果(截图):

3. 编写程序,输入两个集合 setA setB,分别输出它们的交集、并集和差集 setA-setB

参考代码:

(1)程序代码:

setA = eval(input('请输入一个集合:'))
setB = eval(input('再输入一个集合:'))
print('交集:', setA & setB)
print('并集:', setA | setB)
print('setA-setB', setA - setB)

(2)运行结果(截图):

4. 编写程序,输入一个包含若干整数的列表,输出一个新列表,要求新列表中只包含原列表中的偶数。

(1)程序代码:

lst = input('请输入一个包含若干整数的列表:')
lst = eval(lst)
print(list(filter(lambda x: x % 2 == 0, lst)))

(2)运行结果(截图):

5. 编写程序,输入两个分别包含若干整数的列表lstA和lstB,输出一个字典,要求使用列表lstA中的元素作为键,列表lstB中的元素作为值,并且最终字典中的元素数量取决于lstA和lstB中元素最少的列表的数量。

(1)程序代码:

lstA = eval(input('请输入包含若干整数的列表lstA:'))
lstB = eval(input('请输入包含若干整数的列表lstB:'))
result = dict(zip(lstA, lstB))
print(result)

(2)运行结果(截图):

6. 编写程序,输入一个包含若干整数的列表,输出新列表,要求新列表中的所有元素来自于输入的列表,并且降序排列。

(1)程序代码:

lst = eval(input('请输入包含若干整数的列表lst:'))
print(sorted(lst, reverse=True))

(2)运行结果(截图):

7. 编写程序,输入一个字符串,输出期中出现次数最多的字符及其出现的次数。要求使用字典。

(1)程序代码:

data = input('请输入一个字符串: ')
d = dict()
for ch in data:d[ch] = d.get(ch, 0) + 1mostCommon = max(d.items(), key=lambda item: item[1])
print(mostCommon)

(2)运行结果(截图):

三、实验任务

  1. 学习教材第1章、第2章内容,根据实验内容练习相关编程知识。
  2. 独立完成如下编程任务并提交实验报告。(报告撰写要求详见模板文档)

1. 编写程序,输入一个包含若干整数的列表,输出列表中所有整数连乘的结果。

(1)程序代码:

lst = eval(input('请输入一个包含若干整数的列表: '))
result = 1
for num in lst:result *= num
print("列表中所有整数连乘的结果为:", result)

(2)运行结果(截图):

2. 编写程序,生成包含1000个0~100的随机整数,并统计每个元素的出现次数。

(1)程序代码:

import random
random_numbers = [random.randint(0, 100) for _ in range(1000)]
count_dict = {}
for num in random_numbers:count_dict[num] = count_dict.get(num, 0) + 1
print("每个元素的出现次数统计:", count_dict)

(2)运行结果(截图):

部分截图

3. 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排序,后10个元素降序排列,并输出结果。

(1)程序代码:

import random
random_numbers = [random.randint(0, 100) for _ in range(20)]
first_half = sorted(random_numbers[:10])
second_half = sorted(random_numbers[10:], reverse=True)
sorted_list = first_half + second_half
print("排序后的列表:", sorted_list)

(2)运行结果(截图):

部分截图

4. 编写程序,用户输入一个列表和2个整数作为下标,然后输出列表中介于2个下标闭区间直接的元素组成的子列表。例如用户输入[ 1,2,3,4,5,6 ] 和2,5,程序输出[ 3,4,5,6 ]。

(1)程序代码:

lst = eval(input('请输入一个列表: '))
start_index = int(input('请输入起始下标: '))
end_index = int(input('请输入结束下标: '))
sub_list = lst[start_index:end_index+1]
print("子列表:", sub_list)

(2)运行结果(截图):

四、实验总结:

知识点小结

在本次实验中,我深入学习并实践了Python的多个核心概念和技巧。我掌握了Python的基本运算符,这让我能够进行基础的数学计算和逻辑判断。

我也通过实际编程,熟练运用了Python的内置函数,比如max(), min(), sum(), sorted()等,这些函数极大地简化了我的数据处理工作。

此外,我还了解了lambda表达式的用法,尤其是在对列表进行排序和筛选时,lambda表达式提供了极大的便利。

对于Python的序列类型,如列表、元组、字典和集合,我通过实验加深了理解,并学会了如何有效地使用它们来存储和操作数据。我也接触了函数式编程的概念,通过使用map(), filter()等函数,我学会了如何将问题分解成更小的、可复用的部分,并通过函数的组合来解决它们。

实验体会

通过这次实验,我体会到了理论知识与实践操作相结合的重要性。我发现,只有将所学的概念应用到具体的编程任务中,才能真正理解和掌握它们。

未解决的问题

在实验过程中,在理解某些内置函数的高级用法和优化代码性能方面。我发现,对于一些复杂的编程问题,我还需要更多的练习和学习才能找到最佳的解决方案。

改进的方法

为了进一步提高Python编程能力,我计划采取以下几个措施:

1. 深入学习:我将通过阅读Python官方文档、参考书籍和在线教程来加深对Python内置函数和数据结构的理解。

2. 大量练习:我打算通过完成更多的编程练习和项目来提高我的编程技巧,特别是在数据处理和算法设计方面。

3. 反思总结:我会定期回顾和总结我的学习过程,找出知识盲点和不足之处,并制定相应的学习计划。

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

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

相关文章

FENDI CLUB精酿啤酒品鉴体验

当提及“品质卓越,口感非凡”的啤酒时,FENDI CLUB精酿啤酒无疑是一个值得一试的选择。这款啤酒以其独特的酿造工艺和优质的原料,为消费者带来了与众不同的味觉享受。 一、独特的酿造工艺 FENDI CLUB精酿啤酒在酿造过程中,严格遵循…

1200度高温预精轧高线测径仪的特点和抗干扰

关键字:高温测径仪,常温测径仪,预精轧测径仪, 高线测径仪, 线材测径设备,抗干扰测径仪, 高线参数:轧材规格:Φ8~36mm轧制速度:≤ 120 m/s轧制温度: ≤1200℃ 高温预精轧高线光电测径仪是一种用于测量高温线材直径的设备…

【数据分析基础】实验numpy、pandas和matplolib

文件score.xlsx 中存放了学生的各个科目的考试成绩(如下图), 1. 编程实现:输入任意一个学号,将该学号对应的成绩,通过雷达图显示。 (1)程序代码: import pandas as pd…

数字科技如何助力博物馆设计,强化文物故事表现力?

国际博物馆日是每年为了推广博物馆和文化遗产,而设立的一个特殊的日子,让我们可以深入探讨博物馆如何更好地呈现和保护我们的文化遗产,随着近年来的数字科技发展,其在博物馆领域的应用越来越广泛,它为博物馆提供了新的…

HTTP协议分析实验:通过一次下载任务抓包分析

HTTP协议分析 问:HTTP是干啥用的? 最简单通俗的解释:HTTP 是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。 在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。 一、…

Matching Anything by Segmenting Anything

摘要 在复杂场景中跨视频帧稳健地关联相同对象是许多应用的关键,特别是多目标跟踪(MOT)。当前方法主要依赖于标注的特定领域视频数据集,这限制了学习到的相似度嵌入的跨域泛化能力。我们提出了MASA,一种新颖的方法用于…

在 Linux 系统上安装 Android NDK

在 Linux 系统上安装 Android NDK 1. Android NDK2. NDK Downloads2.1. Latest LTS Version (r26d)2.2. Old Unsupported Versions 3. 安装 NDK4. Get started with the NDK (NDK 使用入门)References 1. Android NDK https://developer.android.com/ndk The Android NDK is …

人工智能:面对2024年高考题目,各家大模型的表现

阅读下面的材料,根据要求写作。随着互联网的普及、人工智能的应用,越来越多的问题能很快得到答案。那么,我们的问题是否会越来越少?以上材料引发了你怎样的联想和思考?请写一篇文章。要求:选准角度&#xf…

【C语言】07.函数

一、概念 C语言的函数,有些翻译为:子程序,子程序这种翻译更加准确⼀些。 C语言中的函数就是⼀个完成某项特定的任务的⼀小段代码。这段代码是有特殊的写法和调用方法的。 C语言的程序其实是由无数个小的函数组合而成的,也可以说&…

湘财证券:核心系统数据库迁移实践分享

6月5日,在某信息技术应用创新产业峰会上,湘财证券发表了题为“核心系统数据库迁移实践分享”的主题演讲,探讨了湘财证券核心系统在金仓数据库的支撑下,完成国产化升级的策略和创新成果,受到国资、金融、医疗、教育、交…

【大数据架构】基于流式数据的大数据架构升级

背景 团队在升级大数据架构,摒弃了原来基于hadoop的架构,因此抛弃了hive,hdfs,mapreduce这一套,在讨论和摸索中使用了新的架构。 后端使用kafka流式数据通过rest catalog写入iceberg,存储于minio。在写入iceberg的时候,首先是写data数据文件,然后再写iceberg的metada…

Java 垃圾回收机制 GC 及常用的垃圾回收算法

在 Java 中,所有的对象都是要存在内存中的(也可以说内存中存储的是一个个对象),因此我们将内存回收,也可以叫做死亡对象的回收; GC 回收的目标是堆上的对象;而栈中的局部变量会跟随栈帧的声明周…

智谱AI——智能体开发探索

智谱AI——智能体开发探索 智谱AI开放平台:https://open.bigmodel.cn/ 点击网页右上角“开发工作台”。进入工作台后,可点击进入“文档中心”。 文档中心/接口文档:https://open.bigmodel.cn/dev/api 使用指南:https://open.b…

vue2组件封装实战系列目录

写在前面 本系列教程是vue2的一套技术文章,参考的对象是曾经极为辉煌的elementui组件库,虽然现在已经都开始使用vue3了,但是研究这套组件库,对于提升我们的封装思维还是有很大作用的!!所以活不多少&#x…

OutOfDirectMemoryError堆外内存溢出Bug解决

问题描述: springboot 2.0,整合redis实现缓存,当并发请求上来达到一定量级,会导致系统爆发该异常。 产生原因: 1.springboot 2.0以后默认使用lettuce作为操作redis的客户端,lettuce使用netty进行网络通讯…

【开源】医院电子病历管理系统 SSM+JSP+MySQL

目录 一、项目介绍 科室模块 医生模块 预约挂号模块 就诊记录模块 就诊评价模块 二、项目界面 三、核心代码 一、项目介绍 经典老框架SSM打造入门项目《医院电子病历管理系统》,分为用户网页和管理后台,包括科室模块、医生模块、预约挂号模块、…

[MQTT]服务器EMQX搭建SSL/TLS连接过程(wss://)

👉原文阅读 💡章前提示 本文采用8084端口进行连接,是EMQX 默认提供了四个常用的监听器之一,如果需要添加其他类型的监听器,可参考官方文档🔗管理 | EMQX 文档。 本文使用自签名CA,需要提前在L…

【Redis】构建强韧的远程Redis连接与端口保障机制完美指南

【Redis】构建强韧的远程Redis连接与端口保障机制完美指南 大家好 我是寸铁👊 总结了【Redis】构建强韧的远程Redis连接与端口保障机制完美指南✨ 喜欢的小伙伴可以点点关注 💝 前言 在当今的软件开发领域中,远程访问和操作数据存储是极为常见…

华为OD刷题C卷 - 每日刷题 17(字符串序列判定,最长的指定瑕疵度的元音子串)

1、(字符串序列判定): 这段代码是解决“字符串序列判定”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于判断字符串S是否是字符串L的有效子串。 main方法首先读取两个字符串S和L,…

分布式锁与信号量详解

一、引言 在分布式系统中,数据的一致性和并发控制是两大核心挑战。分布式锁和信号量作为解决这些问题的关键工具,被广泛应用于各种分布式场景中。本文将对分布式锁和信号量的概念、原理、实现方式以及应用场景进行详细介绍,并通过具体的代码…