Python 常用字符串、字典遍历与函数参数技巧速查
本文系统整理了 Python 开发中常用的基础操作与进阶技巧,涵盖字符串反转的多种写法、字典与列表的遍历逻辑、字典按键或值的排序方法、子类初始化调用、动态参数传递规则以及 Lambda 匿名函数的应用场景。相关示例代码均已迁移至 Python 3 环境,可直接复制验证,助您快速查漏补缺并提升编码规范性。
一、 字符串反转的常见实现
在数据处理中,经常需要将文本或序列倒序排列。Python 提供了多种简洁的实现路径,可根据性能需求与代码可读性选择。
第1步:使用切片法(推荐)
利用步长为 -1 的切片特性,一行代码即可返回反转后的新对象,底层由 C 实现,性能最优。
def reverse_slice(text):
return text[::-1]
print(reverse_slice("Hello")) # 输出:olleH
第2步:循环拼接法
通过索引从后向前遍历原字符串,逐字符累加到空字符串中。逻辑直观,适合理解底层迭代过程。
def reverse_loop(text):
result = ''
index = len(text) - 1
while index >= 0:
result += text[index]
index -= 1
return result
第3步:列表反转法
将字符串转为列表后调用内置 reverse() 方法打乱顺序,再用 join() 重新拼接为字符串。
def reverse_list(text):
temp = list(text)
temp.reverse()
return ''.join(temp)
第4步:使用 functools.reduce
借助累算器思想,将当前元素置于之前结果的前方。注意 reduce 已从内置函数移至 functools 模块。
from functools import reduce
def reverse_reduce(text):
return reduce(lambda x, y: y + x, text)
二、 字典与列表的高效遍历
集合类型的遍历是日常数据处理的基石。Python 3 废弃了 iteritems 等迭代器协议专用方法,推荐使用以下现代语法。
字典遍历
- 直接遍历键:最紧凑的写法,适用于只需处理 Key 的场景。
d = {"a": "apple", "b": "banana"}
for key in d:
print(f"d[{key}] = {d[key]}")
- 遍历键值对:
items()同时获取键和值,无需二次查询字典,性能最佳。
for k, v in d.items():
print(f"d[{k}] = {v}")
列表遍历
避免使用 range(len(lst)) 这种易出错且偏命令式的写法,优先使用直接迭代或枚举。
lst = [10, 20, 30]
# 直接迭代元素
for item in lst:
print(item)
# 同时获取索引与元素(推荐)
for idx, val in enumerate(lst):
print(f"index={idx}, value={val}")
三、 字典排序操作
原生字典保持插入顺序但不支持直接排序。需借助 sorted() 函数将字典视图转化为排序后的元组列表。
按字典的值(Value)降序排列
通过 key 参数指定排序依据为元组的第二个元素 x[1],设置 reverse=True 实现从大到小排序。
dic = {'a': 31, 'bc': 5, 'c': 3, 'asd': 4, 'aa': 74, 'd': 0}
sorted_by_val = sorted(dic.items(), key=lambda x: x[1], reverse=True)
print(sorted_by_val)
# 输出:[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)]
按字典的键(Key)升序排列
修改 key 指向元组第一个元素 x[0] 即可。
sorted_by_key = sorted(dic.items(), key=lambda x: x[0])
四、 类继承与函数参数进阶
子类构造函数的正确调用
在 Python 3 中,推荐使用 super().__init__() 替代硬编码父类名,便于多继承场景下的 MRO(方法解析顺序)自动推导。
class Parent(object):
def __init__(self):
print("Parent initialized")
class Child(Parent):
def __init__(self):
super().__init__() # 安全调用父类初始化
print("Child initialized")
灵活的函数参数传递机制
Python 允许通过 *args 接收任意数量的位置参数(打包为元组),通过 **kwargs 接收任意数量的关键字参数(打包为字典)。实际调用时遵循以下匹配顺序:
- 按声明顺序匹配明确传入的位置参数与默认参数。
- 未匹配的多余位置参数自动收集至
*args。 - 名称不冲突的关键字参数匹配对应形参。
- 剩余未匹配的关键字参数收集至
**kwargs。
定义顺序规范:必须参数 → 默认参数 → *args → 仅关键字参数 → **kwargs。违反此顺序将触发 SyntaxError。
def analyze(*args, **kwargs):
print("位置参数元组:", args)
print("关键字参数字典:", kwargs)
analyze(1, 2, 3, name="test", score=90)
# 输出:
# 位置参数元组: (1, 2, 3)
# 关键字参数字典: {'name': 'test', 'score': 90}
Lambda 匿名表达式
lambda 用于创建轻量级的一次性函数,语法为 lambda 参数列表: 表达式。省略了 def 结构、函数名与显式 return,常用于需要简短回调函数的场景。
def make_adder(x):
# 返回一个基于外部变量 x 的闭包函数
return lambda y: x + y
add_five = make_adder(5)
print(add_five(3)) # 输出:8
总结
掌握字符串切片的负数步长、字典视图的排序转换、现代集合遍历语法以及动态参数的打包规则,能够显著减少样板代码并提升执行效率。本文所列技巧覆盖了日常脚本编写与自动化任务的核心痛点,建议结合实际业务逻辑灵活组合使用。以上就是 Python 常用方法与技巧整理的详细内容,更多关于 Python 进阶语法的数据结构与函数调用的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













