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

Python常见面试题的详解5

1. re 模块中 search () 和 match () 的区别
  • 要点在 Python 的 re 模块中,re.match()re.search() 是用于正则表达式匹配的两个重要函数,它们的主要区别在于匹配的起始位置:
  • re.match():从字符串的开头开始匹配正则表达式。如果字符串的开头部分不符合正则表达式的模式,re.match() 函数将返回 None
  • re.search():在整个字符串中搜索第一个符合正则表达式模式的位置,不要求从字符串的开头进行匹配。
  • 示例:

python

import re
text = "abc123"
result_match = re.match(r'\d+', text)    # 由于字符串开头不是数字,返回 None
result_search = re.search(r'\d+', text)   # 能够匹配到字符串中的 "123",返回匹配对象
print(result_match)
print(result_search)
2. 使用 re.sub () 函数进行文本字符串的查询和替换
  • 要点re.sub() 函数是 re 模块中用于字符串替换的强大工具,它可以根据指定的正则表达式模式,将字符串中匹配的部分替换为新的字符串。
  • 示例

python

import re
text = "Python is fun"
new_text = re.sub(r"fun", "awesome", text)  # 将字符串中的 "fun" 替换为 "awesome"
print(new_text)
3. except 的用法和作用
  • 要点except 语句在 Python 的异常处理机制中起着关键作用,它的主要作用是捕获 try 代码块中可能出现的异常,从而防止程序因为异常而崩溃。
  • 示例:

python

try:
    # 这里放置可能会出现错误的代码
    num = 10 / 0  # 会引发 ZeroDivisionError 异常
except ValueError as e:
    # 处理特定的 ValueError 异常,这里可以添加处理逻辑
    print(f"捕获到 ValueError 异常: {e}")
except Exception as e:
    # 处理除了已经明确捕获的特定异常之外的所有其他异常
    print(f"捕获到其他异常: {e}")
4. range () 函数的用法和作用
  • 要点range() 函数是 Python 内置的一个用于生成整数序列的函数,它在循环中经常被使用,有以下几种调用形式:
  • range(stop):生成从 0 到 stop - 1 的整数序列。
  • range(start, stop):生成从 startstop - 1 的整数序列。
  • range(start, stop, step):按照指定的步长 step 生成从 startstop - 1 的整数序列,步长可以为正数或负数。
  • 示例:

python

print(list(range(5)))         # 输出 [0, 1, 2, 3, 4]
print(list(range(1, 10, 2)))  # 输出 [1, 3, 5, 7, 9]
5. 处理大文件(内存限制)
  • 要点:当处理大文件时,为了避免一次性将整个文件加载到内存中导致内存不足的问题,可以采用逐行读取的方式,利用生成器来实现。
  • 示例:

python

def get_lines():
    try:
        with open("file.txt", "r", encoding="utf-8") as f:  # 注意指定文件编码
            for line in f:
                yield line.rstrip("\r\n")  # 去除换行符 \r\n
    except FileNotFoundError:
        print("文件不存在")
    except UnicodeDecodeError:
        print("文件编码错误")
    except:
        print("文件处理过程中出现其他错误")

# 调用生成器函数逐行处理文件
for line in get_lines():
    print(line)

在处理大文件时,需要考虑以下几个问题:

  • 文件编码:确保指定正确的文件编码,常见的编码有 utf-8gbk 等。
  • 换行符处理:不同操作系统的换行符可能不同(如 Windows 系统的 \r\n 和 Linux 系统的 \n),需要进行适当处理。
  • 异常处理:如文件不存在、文件损坏等情况,要进行合理的异常捕获和处理。
6. 判断日期是年份的第几天
  • 要点:可以使用 Python 的 datetime 模块来判断一个日期是所在年份的第几天。
  • 示例:

python

from datetime import datetime

date_str = "2025-02-15"
date = datetime.strptime(date_str, "%Y-%m-%d")
day_of_year = date.timetuple().tm_yday  # 直接获取该日期在年份中的第几天
print(day_of_year)
7. 打乱有序列表
  • 要点:使用 random 模块中的 shuffle() 函数可以对列表进行原地打乱,即直接修改原列表的元素顺序。
  • 示例

python

import random
alist = [1, 2, 3, 4]
random.shuffle(alist)  # 列表 alist 的元素顺序被打乱,例如可能变为 [3, 1, 4, 2]
print(alist)
8. 字典按值排序
  • 要点:可以通过 sorted() 函数结合 lambda 表达式,根据字典的值对字典进行排序。
  • 示例:

python

d = {'a': 24, 'g': 52, 'i': 12, 'k': 33}
sorted_dict = dict(sorted(d.items(), key=lambda x: x[1]))
# 排序后的字典为 {'i': 12, 'a': 24, 'k': 33, 'g': 52}
print(sorted_dict)
9. 字典推导式
  • 要点:字典推导式是一种简洁的创建字典的方式,它可以根据已有的数据结构快速生成字典。将列表转换为字典,列表的元素作为键,元素的索引的平方作为值。
  • 示例

python

keys = ['a', 'b', 'c']
d = {k: i ** 2 for i, k in enumerate(keys)}  # 生成的字典为 {'a': 0, 'b': 1, 'c': 4}
print(d)
10. 反转字符串
  • 要点:在 Python 中,可以通过切片操作来实现字符串的反转。
  • 示例:

python

s = "aStr"
reversed_s = s[::-1]  # 字符串 s 被反转,结果为 "rtSa"
print(reversed_s)
11. 字符串转字典
  • 要点:可以将特定格式的字符串转换为字典,通常需要结合字符串的分割和字典推导式来实现。
  • 示例:

python

s = "k:1 |k1:2|k2:3|k3:4"
d = {k: int(v) for item in s.split("|") for k, v in [item.split(":")]}
# 转换后的字典为 {'k': 1, 'k1': 2, 'k2': 3, 'k3': 4}
print(d)

相关文章:

  • AI 项目开发流程
  • 硅基流动+OfficeAI:开启WPS智能办公新时代
  • 【MATLAB】解决mod函数、逻辑判断的误差问题
  • 说一下Redis中的Gossip协议
  • 机器学习_16 朴素贝叶斯知识点总结
  • Unreal5从入门到精通之使用 BindWidget 将 C++ 连接到 UMG 蓝图
  • nginx部署vue项目访问路径问题
  • MATLAB联动本地部署的DeepSeek模型
  • JAX-RS与JAXB:实现XML数据交互的完整指南
  • 基于MATLAB的城轨车辆跨接电缆长度计算
  • 青少年编程与数学 02-009 Django 5 Web 编程 20课题、测试
  • 68页PDF | 数据安全总体解决方案:从数据管理方法论到落地实践的全方位指南(附下载)
  • 编码格式大全:类型 特点及其在网络安全中的作用
  • STM32 PWM脉冲宽度调制介绍
  • python股票分析系统部署操作过程及代码实现
  • opensuse [Linux] 系统挂在新的机械硬盘
  • Ubuntu 20 掉显卡驱动的解决办法
  • 设计模式-工厂模式
  • go语言并发的最佳实践
  • 【LeetCode Hot100】最大子数组和|动态规划/贪心,Java实现!图解+代码,小白也能秒懂!
  • 高新波任西安电子科技大学校长
  • 德州国资欲退出三东筑工,后者大股东系当地房企东海集团
  • 银行积分大幅贬值遭质疑,涉及工行、中行、农行等
  • 既是工具又是食物,可食用机器人开启舌尖上的新科技
  • 上海“城市文明开放麦”全城总动员,樊振东担任首位上海城市文明大使
  • 缅甸内观冥想的历史漂流:从“人民鸦片”到东方灵修