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

2024.9.27 Python面试八股文

1.列表操作:

1.列表.pop(index)
这样可以pop指定下标的元素
2.列表.reverse()
列表翻转
3.列表名.count(数据):数据在列表中出现的次数。

In [56]: a = [11, 22, 11, 33, 11]
In [57]: a.count(11)
Out[57]: 3

4.列表名.index(数据):数据在列表中首次出现时的索引,没有查到会报错。
In [59]: a = [11, 22, 33, 44, 22]
In [60]: a.index(22)
Out[60]: 1
5.请写出一段 Python 代码实现删除一个 list 里面的重复元素?
如果想要保持他们原来的排序:用 list 类的 sort 方法:

l1=['b','c','d','b','c','a','a']
l2=list(set(l1))
l2.sort(key=l1.index)
print(l2)
#或者下面
l1=['b','c','d','b','c','a','a']
l2=[]
for item in l1:if item not in l2:l2.append(item)

2.集合操作

#交集
A&B
#并集
A|B
#差集
A-B#A里有的,B里也有的,减掉A中的元素,B里有A里没有的,不管,A里有B里没有的,留下
#对称差集
A^B#A|B-A&B

3.文件操作

with open('file.txt', 'r') as f:for i in range(4):  # 假设文件有 4 行line = f.readline()if i in [1, 2]:  # 读取第 2 行和第 3 行print(f"Line {i}: {line.strip()}")

这个例子就表明了,正常情况下我们如何调用某一行

4.strip()

strip说白了就是给你去除多余的空格和回车,文件中是有回车字符的,这样就可以让文件或者输入更干净

line = "   Hello, World!   \n"
line = line.strip()  # 赋值给 line
print(line)  # 输出 "Hello, World!"

5.浅拷贝和深拷贝

# 一维列表
original = [1, 2, 3]
shallow_copy = original[:]
shallow_copy[0] = 99
print(original)  # 输出 [1, 2, 3],两者独立# 多维列表
original = [[1, 2], [3, 4]]
shallow_copy = original[:]
shallow_copy[0][0] = 99
print(original)  # 输出 [[99, 2], [3, 4]],因为共享了可变对象import copy
original = [[1, 2], [3, 4]]
deep_copy = copy.deepcopy(original)
deep_copy[0][0] = 99
print(original)  # 输出 [[1, 2], [3, 4]]

6.回调函数

def process_data(data, callback):result = [x * 2 for x in data]callback(result)def my_callback(result):print("处理后的结果:", result)def save_to_file(result):with open('output.txt', 'w') as f:f.write(str(result))data = [1, 2, 3, 4, 5]# 使用不同的回调函数
process_data(data, my_callback)  # 打印结果
process_data(data, save_to_file)  # 保存到文件

回调函数就是把函数当成参数随着函数带入进去。这个例子中你完全可以在process_data里把两个函数都写进去,但是你的灵活性就降低了。使用回调函数的方法就可以灵活的修改本函数中使用具体哪个块来操作。这个逻辑不是内联函数,仍然是函数的调用,是把函数的指针(地址)作为参数传递给另一个函数,将整个函数当作一个对象,赋值给调用的函数。

这样你可以通过传入不同的回调函数来完成不同的任务,而不需要修改 process_data 本身的实现。
使用回调函数作为参数的设计使得你的代码更加灵活、可扩展、且不同部分可以独立演进。在简单的场景下,可以直接写死回调函数,但在复杂项目中,回调函数作为参数能带来更多的灵活性和可维护性。

相关文章:

  • Linux权限解析
  • 自学网络安全(黑客技术)2024年 90天学习计划
  • 微信小程序加载H5页面及与H5页面通信的实战教程
  • 多旋翼无人机“仿鸟类”精确拦截飞行目标,助力低空安全
  • 鹏哥C语言55-57---二维数组+数组越界+数组传参(冒泡排序)
  • 婚恋交友小程序的设计思路与用户体验优化
  • JavaScript 从事件处理入手的优化
  • 《征服数据结构》哈夫曼树(Huffman Tree)
  • 鸿蒙开发(NEXT/API 12)【硬件(外设扩展驱动开发)】驱动开发服务
  • 【百日算法计划】:每日一题,见证成长(021)
  • IP地址如何与网络虚拟化技术融合?
  • AQS为什么采用双向链表
  • Linux 块设备开发学习
  • 8个前端小程序开发框架的介绍
  • 【JAVA开源】基于Vue和SpringBoot的足球俱乐部管理后台
  • Apache Zeppelin在Apache Trafodion上的可视化
  • bearychat的java client
  • CentOS6 编译安装 redis-3.2.3
  • CSS 提示工具(Tooltip)
  • css属性的继承、初识值、计算值、当前值、应用值
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Joomla 2.x, 3.x useful code cheatsheet
  • Node项目之评分系统(二)- 数据库设计
  • pdf文件如何在线转换为jpg图片
  • PHP 小技巧
  • spring + angular 实现导出excel
  • SpringCloud集成分布式事务LCN (一)
  • supervisor 永不挂掉的进程 安装以及使用
  • 闭包--闭包作用之保存(一)
  • 从0实现一个tiny react(三)生命周期
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 移动端 h5开发相关内容总结(三)
  • MPAndroidChart 教程:Y轴 YAxis
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ###项目技术发展史
  • #ifdef 的技巧用法
  • #Spring-boot高级
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (7)摄像机和云台
  • (C语言)二分查找 超详细
  • (笔试题)合法字符串
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (十一)c52学习之旅-动态数码管
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (转)nsfocus-绿盟科技笔试题目
  • .gitignore文件_Git:.gitignore
  • .Net 6.0 处理跨域的方式
  • .NET 命令行参数包含应用程序路径吗?
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)