当前位置:首页>python>10个超实用的Python小技巧(新手秒会,效率翻倍)

10个超实用的Python小技巧(新手秒会,效率翻倍)

  • 2026-10-21 13:27:56
10个超实用的Python小技巧(新手秒会,效率翻倍)

    你想要的是能直接落地、解决日常编程痛点的Python小技巧,我整理了10个覆盖数据处理、代码简化、效率提升的高频技巧,每个都附示例代码和使用场景,新手也能快速上手。


1. 一键交换两个变量(无需临时变量)

核心技巧:用解构赋值直接交换,告别传统“temp中间变量”写法。

# 传统写法(繁琐)
a = 10
b = 20
temp = a
a = b
b = temp

# 简洁写法(推荐)
a, b = b, a
print(a, b)  # 输出:20 10

适用场景:变量值互换、数据排序时的元素交换。

2. 快速生成数字/字符序列(range/生成器)

核心技巧:用range()或生成器表达式快速造序列,替代手动敲列表。

# 生成0-9的整数列表
nums = list(range(10))
print(nums)  # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 生成1-100的偶数列表(生成器更省内存)
even_nums = [x for x in range(1, 101) if x % 2 == 0]
print(even_nums[:5])  # 输出:[2, 4, 6, 8, 10]

# 生成重复字符/字符串
chars = "a" * 5
print(chars)  # 输出:aaaaa

适用场景:循环遍历、测试数据生成、批量造数。

3. 列表/字典快速去重(保留顺序)

核心技巧:列表去重用dict.fromkeys()(3.7+保留顺序),字典去重直接取键。

# 列表去重(保留原顺序)
lst = [1, 2, 2, 3, 3, 3, 4]
unique_lst = list(dict.fromkeys(lst))
print(unique_lst)  # 输出:[1, 2, 3, 4]

# 字典去重(按值去重,保留第一个键)
d = {"a": 1, "b": 2, "c": 1, "d": 2}
unique_d = {}
for k, v in d.items():
    if v not in unique_d.values():
        unique_d[k] = v
print(unique_d)  # 输出:{'a': 1, 'b': 2}

适用场景:数据清洗、重复值过滤、统计唯一值。

4. 一行代码合并多个列表/字典

核心技巧:列表用+或extend,字典用|(3.9+)或update,简洁高效。

# 合并列表
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
merged_lst = lst1 + lst2  # 或 lst1.extend(lst2)
print(merged_lst)  # 输出:[1, 2, 3, 4, 5, 6]

# 合并字典(3.9+)
d1 = {"name": "张三", "age": 20}
d2 = {"gender": "男", "age": 21}
merged_d = d1 | d2  # 重复键取后一个值
print(merged_d)  # 输出:{'name': '张三', 'age': 21, 'gender': '男'}

适用场景:多数据源整合、配置项合并。

5. 快速统计列表元素出现次数(Counter)

核心技巧:用collections.Counter,替代手动循环计数,一行出结果。

from collections import Counter

lst = ["苹果", "香蕉", "苹果", "橙子", "香蕉", "苹果"]
count = Counter(lst)
print(count)  # 输出:Counter({'苹果': 3, '香蕉': 2, '橙子': 1})
print(count["苹果"])  # 输出:3(查单个元素次数)
print(count.most_common(2))  # 输出:[('苹果', 3), ('香蕉', 2)](取前2多的元素)

适用场景:数据统计、词频分析、重复值排查。

6. 优雅处理空值/默认值(or/get)

核心技巧:用or给变量设默认值,字典用get()避免KeyError。

# 变量默认值(避免None/空字符串)
name = ""  # 或 None
real_name = name or "未知用户"
print(real_name)  # 输出:未知用户

# 字典取值(避免KeyError)
d = {"a": 1, "b": 2}
# 传统写法(易报错)
# print(d["c"])  # KeyError
# 优雅写法
print(d.get("c", 0))  # 输出:0(键不存在时返回默认值0)

适用场景:数据读取、参数校验、字典取值。

7. 批量读取文件(glob+with)

核心技巧:用glob匹配文件路径,with自动关闭文件,避免内存泄漏。

import glob

# 读取当前目录下所有.txt文件
for file_path in glob.glob("*.txt"):
    with open(file_path, "r", encoding="utf-8") as f:
        content = f.read()
        print(f"文件{file_path}内容:\n{content[:50]}...")  # 只打印前50字符

适用场景:批量处理日志、文本文件、数据文件。

8. 快速格式化字符串(f-string)

核心技巧:用f-string替代%或format,简洁且支持表达式。

name = "李四"
age = 25
# 传统写法(繁琐)
print("姓名:%s,年龄:%d" % (name, age))
# f-string写法(推荐)
print(f"姓名:{name},年龄:{age},明年年龄:{age + 1}")
# 输出:姓名:李四,年龄:25,明年年龄:26

# 格式化数字(保留2位小数)
num = 3.1415926
print(f"圆周率:{num:.2f}")  # 输出:圆周率:3.14

适用场景:日志输出、数据展示、字符串拼接。

9. 循环带索引(enumerate)

核心技巧:用enumerate同时获取索引和值,替代手动计数i += 1。

lst = ["a", "b", "c", "d"]
# 传统写法(易出错)
i = 0
for item in lst:
    print(f"索引{i}:{item}")
    i += 1

# 优雅写法
for idx, item in enumerate(lst, start=1):  # start指定索引起始值
    print(f"索引{idx}:{item}")
# 输出:
# 索引1:a
# 索引2:b
# 索引3:c
# 索引4:d

适用场景:遍历列表/元组、需要索引的循环操作。

10. 快速执行耗时统计(timeit)

核心技巧:用timeit测试代码运行时间,优化性能瓶颈。

import timeit

# 测试两种列表生成方式的耗时
# 方式1:列表推导式
t1 = timeit.timeit('[x for x in range(10000)]', number=1000)
# 方式2:for循环
t2 = timeit.timeit('lst=[]; for x in range(10000): lst.append(x)', number=1000)

print(f"列表推导式耗时:{t1:.4f}秒")
print(f"for循环耗时:{t2:.4f}秒")
# 输出示例:
# 列表推导式耗时:0.0821秒
# for循环耗时:0.1567秒

适用场景:代码性能优化、算法效率对比。

    这些技巧覆盖了Python日常开发80%的高频场景,熟练掌握后能显著提升编码效率,避免新手常见的“繁琐写法”和“低级错误”。需要我针对某一个技巧展开讲解,或补充更多场景的实战案例吗?

最新文章

随机文章