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 本身的实现。
使用回调函数作为参数的设计使得你的代码更加灵活、可扩展、且不同部分可以独立演进。在简单的场景下,可以直接写死回调函数,但在复杂项目中,回调函数作为参数能带来更多的灵活性和可维护性。

Python面试八股文是一种常见的面试准备方法,可以帮助你系统地复习Python的基础知识和常见问题。以下是一个简单的Python面试八股文的框架: 1. Python基础知识: - Python的特点和优势 - Python的数据类型和变量命名规则 - Python的运算符和表达式 - Python的条件语句和循环语句 - Python的函数和模块 - Python的面向对象编程 2. 常用的Python库和框架: - NumPy:用于科学计算和数据分析 - Pandas:用于数据处理和分析 - Matplotlib:用于数据可视化 - Django:用于Web开发 - Flask:用于Web开发和API构建 - TensorFlow或PyTorch:用于机器学习和深度学习 3. Python的异常处理: - Python中常见的异常类型及其处理方法 - try-except语句的使用及注意事项 - finally语句的作用和使用场景 4. 数据库操作: - Python连接数据库的方式和常用的库(如MySQL、SQLite) - SQL语句在Python中的执行方法 - 数据库事务处理和连接池的概念 5. 多线程和多进程: - 多线程和多进程的概念和区别 - Python中实现多线程和多进程的方式(如threading和multiprocessing库) - 多线程和多进程的应用场景和注意事项 6. Web开发相关: - HTTP协议的基本原理和常见请求方法 - Python的Web框架(如Django和Flask)的使用和特点 - RESTful API的设计和实现 7. 测试和调试: - 单元测试和集成测试的概念和区别 - Python中常用的测试框架(如unittest和pytest) - Python中的调试方法和工具(如pdb和print语句) 8. 代码优化和性能调优: - Python中常见的代码优化技巧(如避免不必要的循环、使用生成器等) - Python中常用的性能调优工具和技术(如时间复杂度分析、使用C扩展库等) 以上是一个简单的Python面试八股文的框架,你可以根据自己的情况进行适当的调整和扩展。希望对你的面试准备有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值