Python面试高频题解析:字符串、列表与字典操作

📅 2026/7/18 3:21:52
Python面试高频题解析:字符串、列表与字典操作
1. Python面试问题深度解析21-40题实战指南作为Python开发者面试中经常会被问到各种基础知识和实战问题。本系列文章精选了100个高频Python面试题本文聚焦第21到40题涵盖字符串处理、列表操作、字典应用等核心知识点。这些问题不仅能检验你的Python基础更能考察你对语言特性的理解深度。1.1 字符串处理实战技巧1.1.1 字符串反转与大小写转换字符串反转是面试中的经典问题。Python中可以通过切片操作轻松实现s ilovechina reversed_str s[::-1] # 输出anihcevoli大小写转换则有多种方法# 首字母大写 hello world.title() # Hello World # 全转小写 HHH.lower() # hhh # 去除首尾空格 adabdw .strip() # adabdw注意strip()只能去除首尾空格中间的空格需要用其他方法处理。比如用正则表达式re.sub(r\s, , 你好 中国 )1.1.2 字符串格式化与编码Python中有三种主流字符串格式化方式# %格式化Python2风格 Hello %s % World # str.format()Python3推荐 Hello {}.format(World) # f-stringPython3.6最佳实践 name World fHello {name}编码转换需要注意# GBK转UTF-8 s 中文.encode(gbk) # 先编码为GBK s.decode(gbk).encode(utf-8) # 解码后转UTF-81.2 列表操作高级技巧1.2.1 列表去重与合并列表去重有多种实现方式# 方法1利用集合特性 lst [1,2,3,1,2] unique_lst list(set(lst)) # [1, 2, 3] # 方法2保持原有顺序 from collections import OrderedDict unique_lst list(OrderedDict.fromkeys(lst))列表合并的几种方式a [1,5,7,9] b [2,2,6,8] # 直接相加创建新列表 c a b # extend方法原地修改 a.extend(b) # 切片赋值 a[len(a):] b1.2.2 列表展开与打乱展开嵌套列表的优雅方式nested [[1,2],[3,4],[5,6]] flat [item for sublist in nested for item in sublist] # 输出[1, 2, 3, 4, 5, 6]随机打乱列表import random lst [1,2,3,4,5] random.shuffle(lst) # 原地打乱1.3 字典操作精髓1.3.1 字典合并与排序字典合并的三种方式a {A:1,B:2} b {C:3,D:4} # 方法1update() c {} c.update(a) c.update(b) # 方法2dict构造函数 c dict(a, **b) # 方法3解包操作Python3.5推荐 c {**a, **b}字典列表按值排序data [ {name:alice, age:38}, {name:bob, age:18}, {name:Carl, age:28} ] sorted_data sorted(data, keylambda x: x[age])1.3.2 字典生成式与元组转换字典生成式的妙用# 生成平方字典 square_dict {x: x*x for x in range(6)} # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}元组转字典的两种方式keys (a, b) values (1, 2) # 方法1zip转换 dict(zip(keys, values)) # 方法2字典生成式 {k:v for k,v in zip(keys, values)}1.4 数据类型综合应用1.4.1 可变与不可变类型Python中核心数据类型分类不可变类型int、float、str、tuple、frozenset可变类型list、dict、set判断示例a (1,2,3) a[0] 4 # 报错元组不可变 b [1,2,3] b[0] 4 # 正常执行1.4.2 生成器与迭代器列表推导式转生成器# 列表推导式立即计算 [x*x for x in range(10)] # 生成器表达式惰性计算 (x*x for x in range(10))切片生成器的实现import itertools gen (x for x in range(100)) sliced itertools.islice(gen, 10, 20) # 取10-20项1.5 常见问题排查与优化1.5.1 性能优化技巧处理大数据集时生成器比列表更节省内存# 不好的做法一次性读取大文件 with open(huge.log) as f: lines f.readlines() # 可能耗尽内存 # 推荐做法使用生成器逐行处理 def read_lines(file): with open(file) as f: for line in f: yield line1.5.2 易错点警示元组可变性陷阱a (1,2,3,[4,5]) a[3].append(6) # 可以执行因为修改的是列表元素 a[0] 7 # 报错不能修改元组直接元素深拷贝与浅拷贝区别import copy lst [1,2,[3,4]] shallow copy.copy(lst) # 只拷贝第一层 deep copy.deepcopy(lst) # 递归拷贝所有层级掌握这些核心知识点不仅能帮助你在Python面试中游刃有余更能提升日常开发中的代码质量和效率。建议读者针对每个问题自己动手实践理解背后的原理而不仅仅是记住答案。