跳到主要内容
30 个极简 Python 代码片段与实用技巧 | 极客日志
Python AI 算法
30 个极简 Python 代码片段与实用技巧 30 个 Python 实用代码片段,涵盖列表去重、字符串处理、字典合并、性能测试等核心技巧。内容包含具体代码示例与原理说明,旨在帮助开发者提升编码效率。通过掌握集合运算、生成器、正则匹配及标准库函数,可解决日常开发中的常见问题。适合初学者巩固基础及进阶开发者优化代码风格。
灭霸 发布于 2025/2/6 更新于 2026/6/3 22 浏览30 个极简 Python 代码片段与实用技巧
Python 因其简洁易读的语法和强大的生态系统,成为数据科学、自动化脚本及 Web 开发的首选语言。掌握一些核心技巧和标准库用法,能显著提升编码效率。以下整理了 30 个实用的 Python 代码片段,涵盖列表操作、字符串处理、字典管理及性能优化等方面。每个片段均附带简要原理说明,帮助开发者快速理解并应用到实际项目中。
1. 重复元素判定
检查列表中是否存在重复元素是常见需求。利用集合(Set)的唯一性特性,可以快速判断。
def all_unique (lst ):
return len (lst) == len (set (lst))
x = [1 , 1 , 2 , 2 , 3 , 2 , 3 , 4 , 5 , 6 ]
y = [1 , 2 , 3 , 4 , 5 ]
print (all_unique(x))
print (all_unique(y))
原理: set() 会去除重复项,比较原列表长度与集合长度即可判断。时间复杂度为 O(n)。
2. 字符元素组成判定
判断两个字符串是否由相同的字符组成(变位词)。使用 collections.Counter 统计字符频率。
from collections import Counter
def anagram (first, second ):
return Counter(first) == Counter(second)
print (anagram("abcd3" , "3acdb" ))
原理: Counter 返回字符计数字典,直接比较字典相等性。
3. 内存占用
查看变量在内存中占用的字节数,有助于进行内存优化分析。
import sys
variable = 30
print (sys.getsizeof(variable))
注意: getsizeof 仅返回对象本身的大小,不包含引用的其他对象大小。
4. 字节占用 计算字符串编码后的字节数,常用于网络传输或存储限制场景。
def byte_size (string ):
return len (string.encode('utf-8' ))
print (byte_size(':grinning:' ))
print (byte_size('Hello World' ))
原理: 不同字符在 UTF-8 编码下占用字节数不同(如 Emoji 可能占多字节)。
5. 打印 N 次字符串 利用字符串乘法运算符,无需循环即可重复输出字符串。
n = 2
s = "Programming"
print (s * n)
优势: 比 for 循环更简洁,底层由 C 实现,效率较高。
6. 大写第一个字母 s = "programming is awesome"
print (s.title())
适用: 标题格式化。注意 capitalize() 仅大写首字母,其余小写。
7. 分块 from math import ceil
def chunk (lst, size ):
return list (
map (lambda x: lst[x * size:x * size + size],
list (range (0 , ceil(len (lst) / size)))))
print (chunk([1 , 2 , 3 , 4 , 5 ], 2 ))
8. 压缩 过滤掉列表中的假值(False, None, 0, "" 等)。
def compact (lst ):
return list (filter (bool , lst))
print (compact([0 , 1 , False , 2 , '' , 3 , 'a' , 's' , 34 ]))
原理: bool() 函数将非零、非空对象转为 True。
9. 解包 array = [['a' , 'b' ], ['c' , 'd' ], ['e' , 'f' ]]
transposed = zip (*array)
print (list (transposed))
注意: zip 返回迭代器,需转换为 list 查看。
10. 链式对比 a = 3
print (2 < a < 8 )
print (1 == a < 2 )
等价于: (2 < a) and (a < 8)。
11. 逗号连接 hobbies = ["basketball" , "football" , "swimming" ]
print ("My hobbies are: " + ", " .join(hobbies))
12. 元音统计 import re
def count_vowels (str_val ):
return len (re.findall(r'[aeiou]' , str_val, re.IGNORECASE))
print (count_vowels('foobar' ))
print (count_vowels('gym' ))
修正: 原文本中 len(len(...)) 有误,已修正为 len(...)。
13. 首字母小写 def decapitalize (string ):
return string[:1 ].lower() + string[1 :]
print (decapitalize('FooBar' ))
14. 展开列表(递归) def spread (arg ):
ret = []
for i in arg:
if isinstance (i, list ):
ret.extend(i)
else :
ret.append(i)
return ret
def deep_flatten (lst ):
result = []
result.extend(
spread(list (map (lambda x: deep_flatten(x) if type (x) == list else x, lst))))
return result
print (deep_flatten([1 , [2 ], [[3 ], 4 ], 5 ]))
15. 列表的差集 def difference (a, b ):
set_a = set (a)
set_b = set (b)
comparison = set_a.difference(set_b)
return list (comparison)
print (difference([1 , 2 , 3 ], [1 , 2 , 4 ]))
16. 通过函数取差集 def difference_by (a, b, fn ):
b = set (map (fn, b))
return [item for item in a if fn(item) not in b]
from math import floor
print (difference_by([2.1 , 1.2 ], [2.3 , 3.4 ], floor))
17. 链式函数调用 def add (a, b ):
return a + b
def subtract (a, b ):
return a - b
a, b = 4 , 5
print ((subtract if a > b else add)(a, b))
18. 检查重复项 def has_duplicates (lst ):
return len (lst) != len (set (lst))
x = [1 , 2 , 3 , 4 , 5 , 5 ]
y = [1 , 2 , 3 , 4 , 5 ]
print (has_duplicates(x))
print (has_duplicates(y))
19. 合并两个字典 def merge_two_dicts (a, b ):
c = a.copy()
c.update(b)
return c
a = {'x' : 1 , 'y' : 2 }
b = {'y' : 3 , 'z' : 4 }
print (merge_two_dicts(a, b))
Python 3.5+ 写法: {**a, **b} 更为简洁。
20. 将两个列表转化为字典 def to_dictionary (keys, values ):
return dict (zip (keys, values))
keys = ["a" , "b" , "c" ]
values = [2 , 3 , 4 ]
print (to_dictionary(keys, values))
21. 使用枚举 items = ["a" , "b" , "c" , "d" ]
for index, element in enumerate (items):
print (f"Value {element} Index {index} " )
22. 执行时间 import time
start_time = time.time()
a = 1
b = 2
c = a + b
end_time = time.time()
total_time = end_time - start_time
print (f"Time: {total_time} " )
23. Try-Else 结构 try :
2 * 3
except TypeError:
print ("An exception was raised" )
else :
print ("Thank God, no exceptions were raised." )
逻辑: else 仅在无异常抛出时执行,区别于 finally。
24. 元素频率 def most_frequent (list_ ):
return max (set (list_), key=list_.count)
lst = [1 , 2 , 1 , 2 , 3 , 2 , 1 , 4 , 2 ]
print (most_frequent(lst))
25. 回文序列 def palindrome (string ):
from re import sub
s = sub('[\W_]' , '' , string.lower())
return s == s[::-1 ]
print (palindrome('taco cat' ))
26. 不使用 if-else 的计算 import operator
action = {
"+" : operator.add,
"-" : operator.sub,
"/" : operator.truediv,
"*" : operator.mul,
"**" : pow
}
print (action['-' ](50 , 25 ))
27. Shuffle 洗牌 打乱列表顺序,使用 Fisher-Yates 算法。
from copy import deepcopy
from random import randint
def shuffle (lst ):
temp_lst = deepcopy(lst)
m = len (temp_lst)
while m:
m -= 1
i = randint(0 , m)
temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
return temp_lst
foo = [1 , 2 , 3 ]
print (shuffle(foo))
28. 展开列表(单层) def spread (arg ):
ret = []
for i in arg:
if isinstance (i, list ):
ret.extend(i)
else :
ret.append(i)
return ret
print (spread([1 , 2 , 3 , [4 , 5 , 6 ], [7 ], 8 , 9 ]))
29. 交换值 def swap (a, b ):
return b, a
a, b = -1 , 14
result = swap(a, b)
print (result)
30. 字典默认值 d = {'a' : 1 , 'b' : 2 }
print (d.get('c' , 3 ))
对比: 若 Key 不存在且未设默认值,d['c'] 会抛出 KeyError。
以上 30 个技巧涵盖了 Python 日常开发中的高频场景。熟练掌握这些基础用法,能够编写出更简洁、高效的代码。建议在实际项目中多加练习,结合官方文档深入理解相关模块。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online