当前位置: 首页 > news >正文

Python基础和高级【抽取复习】

1.Python 的深拷贝和浅拷贝有什么区别?

浅拷贝【ls.copy()】:
将列表的不可变对象【值】复制一份,同时引用其中的可变对象【列表】,共用一个内存地址
深拷贝【ls=copy.deepcopy(list)】:
完全的复制原可变对象,生成新的可变对象,两个对象互相独立

2.列表和元组的区别是什么?

 1. 列表
概念:有序序列,使用[ ]定义,元素之间用,隔开有序序列
增删改操作:可以增删改列表的任意元素不可变元素;2. 元组
概念:使用( )定义,元素之间用,隔开
增删改操作:- 元素项不可更改;- 元组中可变有序序列可以更改;- 不能删除元素项,只能删除整个元组

3.什么是迭代器,什么是生成器?在一个生成器用 yield 返回的中途把 yield 换成 return 是否可行?

迭代器:符合迭代器协议的对象,实现__iter__和__next__两个方法,前者表示迭代器本身,后者表示迭代器的下一个元素【例:斐波那契数列】,是用来访问的
生成器:是一个特殊的迭代器,按需动态生成值【惰性求值】,避免一次性生成大量数据占用大量内存,只有使用yield关键字时才会返回一个值,并且程序暂停执行,直至下一次迭代【状态保持】
生成器本身就是一个迭代器,调用使用yield关键字的函数,返回的是一个生成器对象,此时函数还没有执行,通过一个for循环,调用__next__方法时才会返回函数的值。在此过程中,yield会分段生成值。
而普通函数中使用return,返回的是该函数的结果,并且return用于终止函数,中途将yield改为return会导致生成器提前终止

4.lambda 的作用和适用场景是什么?

lambda函数就是没有名字的,只能使用一次的临时函数,一个函数体只有一条语句和一个返回值,用于实现简单功能。
lambda 返回值:表达式
适用场景:
- 简单计算
。搭配高阶函数map() reduce() filter()
- 拓展常用高阶函数:
。map应用到一个序列的每个元素,返回迭代器
ret=list(map(lambda x:x+2,ls))reduce对序列进行累计
ret=reduce(lambda x,y:x*y,ls)filter遍历序列中的元素,根据条件筛选,返回迭代器
ret=list(filter(lambda x:x%2==0,ls))

5.Python 和 Java 的多线程有什么区别?

Python线程执行受GIL限制,是单核执行;而Java可以多核并行执行
Python线程的创建方式是依赖threading模块;而Java是依赖Runnable接口或Thread类
Python的线程同步是使用Lock、Semaphore等同步原语;而Java是使用synchronized等关键字
Python线程池的创建通过concurrent.futures.ThreadPoolExecutor或multiprocessing.pool.ThreadPool实现;而Java通过ExecutorService接口及Executors工厂类创建线程池
Python线程适用场景是I/O密集型任务;而Java则适用于I/O密集型任务和CPU密集型任务

6.Python 的装饰器是什么?请举例说明其作用。

- 装饰器本质上是一种特殊的嵌套函数【在一个函数内部又定义了另一个函数】
它接收一个函数【被装饰的函数】作为参数,返回一个新的函数【装饰后的函数】
装饰器最大的作用就是可以让我们在不改变被装饰函数的情况下,给被装饰函数添加新的功能。
# 定义装饰器
def disc(func):def inner():print('我是生活在一个小树苗下的小草')func()print('我是小树苗庞的石头')return inner# 被装饰函数
def func():print('我是一棵小树苗')func=disc(func)
func()

7.如何加载一个文本文件并获取其中最长的英文单词?

编程思路:
- 打开文件获取数据【with open('path','r',encoding='utf-8') as file:- 清洗数据【去除非英文字符,分割为单词】
- 比较单词长度【直接用max(单词列表,key=len)或使用len()函数遍历比较】
import redef find_longest_english_word(file_path):# 打开文件并读取内容with open(file_path, 'r', encoding='utf-8') as file:content = file.read()# 清洗数据:移除所有非英文字母字符,并转换为小写cleaned_content = re.sub(r'[^a-zA-Z]', ' ', content).lower()# 将文本分割成单词列表(连续的英文字母视为一个单词)words = cleaned_content.split()# 过滤出仅包含英文字母的单词(确保没有残留的非字母字符)english_words = [word for word in words if word.isalpha()]# 处理空文件的情况if not english_words:return None# 使用max函数找到最长的单词longest_word = max(english_words, key=len)return longest_word# 使用示例
if __name__ == "__main__":file_path = "example.txt"  # 替换为实际文件路径longest_word = find_longest_english_word(file_path)if longest_word:print(f"最长的英文单词是: {longest_word},长度为 {len(longest_word)}")else:print("文件中未找到英文单词。")

8.is 和 == 的区别是什么?

is:判断两个对象是否指向同一内存地址
一般判断对象是否是:NoneTrueFalse
==:判断两个值是否相等

9.range 是什么?

- Python的一个内置函数,用于生成不可变的整数序列
- 参数:range(start,stop,step)
.开始【包含】
.结束【不包含】
.步长【可以为负值,此时start必须大于stop才是有效的】

10.给你一个数字序列,怎么求其中的质数?

质数:大于1且只能被1和本身整除
ls=[1,3,5,7,9]
判断思路:
- n<=1  小于等于1不是质数
- n==2  2是质数,其他偶数都不是质数
- n>2    奇数,检查从3到n的算数平方根能否整除
- 遍历列表执行上面三步操作
【注意】:
- 如果序列很长,可以使用迭代器获取列表内的值,节省内存
- 对于超大规模序列,可以考虑使用多进程/多线程加速判断

11.怎么改变 list 的类型,比如如何把一个列表变成一个集合或者一个元组?

在python中直接使用内置函数转换就可以
list_set=set(list)【会自动去重】
list_tuple=tuple(list)

12.知道 reduce 函数吗?其作用是什么?

reduce函数是一种高阶函数
作用:对序列进行累计,这里的累计可以是加减乘除
ls=[1,2,3,4,5]
reduce(lambda x,y:x*y,ls)=1*2*3*4*5=120
http://www.dtcms.com/a/288874.html

相关文章:

  • 基于单片机的自动条幅悬挂机
  • Leetcode 06 java
  • SpringBoot的配置文件
  • 【micro:bit】从入门到放弃(四):高级指令:函数、数组、文本、高级LED、引脚配置
  • UE蒙太奇和动画序列有什么区别?
  • 早期SD模型控制生成方法
  • Dev-C++——winAPI贪吃蛇小游戏
  • 智能制造之物料详解
  • 物联网安装调试-温湿度传感器
  • 数学专业转行做大数据容易吗?需要补什么?
  • 高性能熔断限流实现:Spring Cloud Gateway 在电商系统的实战优化
  • 本地部署 Claude 大语言模型的完整实践指南
  • 从磁记录到数据中心:磁盘原理与服务器架构的完整技术链路
  • 【C++基础】面试高频考点解析:extern “C“ 的链接陷阱与真题实战
  • 【原创】微信小程序添加TDesign组件
  • 网络安全初级(前端页面的编写分析)
  • 手写tomcat
  • JAVA学习-练习试用Java实现“贝叶斯网络:实现一个简单的贝叶斯网络用于因果推理”
  • Transient Storage
  • Redis通用常见命令(含面试题)
  • [硬件电路-51]:晶体管既可以用于模拟电路芯片,也可以用于数字电路芯片,晶体管应用在这两个领域的相同点和本质区别?
  • Linux之dpkg--命令的用法
  • Apache基础配置
  • DOM型XSS破坏
  • gcc 和 g++ 的区别
  • Pycaita二次开发基础代码解析:材料属性管理与焊点坐标导出实战指南
  • Go实现用户登录小程序
  • WPF学习笔记(28)Interaction.Triggers的意义与使用方式
  • Java设计模式之行为型模式(备忘录模式)应用场景分析
  • HTML和CSS快速入门