Python面试必备:字符串、列表与字典操作详解

📅 2026/7/18 12:22:58
Python面试必备:字符串、列表与字典操作详解
1. Python面试问题精选解析(21-40题)作为Python开发者面试中经常会被问到各种基础知识和实际问题。下面我将详细解析第21到40题的Python面试问题这些问题涵盖了字符串处理、列表操作、字典使用等核心知识点。1.1 字符串处理相关问题1.1.1 字符串大小写转换问题21将hello world转换为首字母大写Hello Worlds hello world result s.title() # 使用title()方法将每个单词首字母大写 print(result) # 输出: Hello World注意title()方法会将字符串中每个单词的首字母大写其余字母小写。如果只需要第一个单词首字母大写可以使用capitalize()方法。1.1.2 字符串反转问题23将字符串ilovechina进行反转s ilovechina reversed_s s[::-1] # 使用切片[::-1]实现字符串反转 print(reversed_s) # 输出: anihcevoli技巧Python中字符串切片操作非常高效[::-1]表示从后向前以步长1取字符。1.1.3 字符串格式化问题24Python中的字符串格式化方式Python提供了多种字符串格式化方法# 1. %操作符 (旧式) name Alice print(Hello, %s! % name) # 2. str.format()方法 (Python 2.6) print(Hello, {}!.format(name)) # 3. f-string (Python 3.6) print(fHello, {name}!)建议Python 3.6推荐使用f-string它更简洁、可读性更好且性能更高。1.1.4 字符串编码转换问题27GBK编码字符串转UTF-8s 你好.encode(gbk) # 假设s是GBK编码的bytes utf8_s s.decode(gbk).encode(utf-8) # 先解码为unicode再编码为utf-8注意处理编码问题时一定要先知道原始编码格式否则解码会出错。1.2 列表操作相关问题1.2.1 列表去重问题32对列表元素去重alist [1, 2, 3, 1, 2] unique_list list(set(alist)) # 利用集合去重 print(unique_list) # 输出: [1, 2, 3] (顺序可能变化) # 如果需要保持原顺序 from collections import OrderedDict unique_ordered list(OrderedDict.fromkeys(alist))注意set()去重会改变元素顺序如需保持顺序可以使用OrderedDict。1.2.2 列表展开问题35展开嵌套列表nested_list [[1, 2], [3, 4], [5, 6]] flat_list [item for sublist in nested_list for item in sublist] print(flat_list) # 输出: [1, 2, 3, 4, 5, 6]技巧列表推导式是Python中处理列表的强大工具可以替代很多循环操作。1.2.3 列表合并问题36合并两个列表list1 [1, 5, 7, 9] list2 [2, 2, 6, 8] # 方法1: extend() list1.extend(list2) # 方法2: 运算符 combined list1 list2 # 方法3: 切片赋值 list1[len(list1):] list2注意extend()会修改原列表而运算符会创建新列表。1.3 字典操作相关问题1.3.1 字典排序问题39按值对字典列表排序d1 [ {name: alice, age: 38}, {name: bob, age: 18}, {name: Carl, age: 28} ] sorted_d sorted(d1, keylambda x: x[age]) print(sorted_d) # 输出: [{name: bob, age: 18}, {name: Carl, age: 28}, {name: alice, age: 38}]技巧sorted()函数的key参数非常灵活可以传入函数或lambda表达式指定排序依据。1.3.2 字典合并问题40合并两个字典a {A: 1, B: 2} b {C: 3, D: 4} # Python 3.5推荐方式 c {**a, **b} # 其他方法 c a.copy() c.update(b) # 或者 c dict(a, **b)注意如果字典有重复键后面的值会覆盖前面的值。1.3.3 字典生成式问题41使用生成式创建字典# 创建键为数字值为其平方的字典 square_dict {x: x*x for x in range(6)} print(square_dict) # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}技巧字典生成式与列表生成式类似可以简洁地创建字典。1.4 综合数据类型问题1.4.1 元组与字典转换问题42将两个元组合并为字典keys (a, b) values (1, 2) # 方法1: zipdict result dict(zip(keys, values)) # 方法2: 字典生成式 result {keys[i]: values[i] for i in range(len(keys))} print(result) # 输出: {a: 1, b: 2}注意zip()函数将多个可迭代对象打包成元组列表非常适合这类转换操作。1.4.2 生成器表达式问题47将列表推导式改为生成器# 列表推导式 list_comp [i for i in range(3)] # 返回列表 # 生成器表达式 gen_exp (i for i in range(3)) # 返回生成器对象 print(list_comp) # 输出: [0, 1, 2] print(list(gen_exp)) # 输出: [0, 1, 2]技巧生成器表达式比列表推导式更节省内存适合处理大量数据。1.5 常见问题与注意事项字符串处理Python字符串是不可变对象所有修改操作都会创建新字符串列表去重set()去重会丢失顺序OrderedDict可以保持顺序但性能略低字典合并Python 3.5的{**d1, **d2}语法最简洁高效生成器使用生成器只能迭代一次如需多次使用可转换为列表编码问题处理文本时始终明确编码推荐使用UTF-81.6 实际应用场景数据清洗字符串操作和列表处理常用于数据清洗和预处理配置管理字典常用于存储和管理配置信息内存优化生成器适合处理大型数据集避免内存不足API开发字典和列表的序列化/反序列化是Web API开发的基础掌握这些基础问题的解决方法不仅能帮助通过面试更能提升日常开发效率。建议读者实际运行这些代码示例并尝试解决类似问题来加深理解。