
在Python编程的世界里,简洁高效的代码往往能事半功倍。今天为大家整理了30个实用代码片段,覆盖日常开发中的高频场景,每个都短小精悍却威力无穷。
1. 列表去重保持顺序
defremove_duplicates(lst):
seen = set()
return [xforxinlstifnot (xinseenorseen.add(x))]
# 示例
original = [3, 2, 1, 2, 3, 4, 5, 4]
result = remove_duplicates(original)
print(result) # [3, 2, 1, 4, 5]2. 字典键值反转
defreverse_dict(d):
return {v: kfork, vind.items()}
# 示例
original = {'a': 1, 'b': 2, 'c': 3}
reversed_dict = reverse_dict(original)
print(reversed_dict) # {1: 'a', 2: 'b', 3: 'c'}3. 统计元素频率
fromcollectionsimportCounter
data = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
freq = Counter(data)
print(freq.most_common(2)) # [('apple', 3), ('banana', 2)]4. 检查字符串是否为数字
defis_number(s):
try:
float(s)
returnTrue
exceptValueError:
returnFalse
# 示例
print(is_number("123.45")) # True
print(is_number("abc")) # False5. 生成随机字符串
importrandom
importstring
defrandom_string(length=8):
chars = string.ascii_letters+string.digits
return''.join(random.choice(chars) for_inrange(length))
# 示例
print(random_string(10)) # 类似 "aB3dE7gH9j"6. 字符串首字母大写
defcapitalize_words(s):
return' '.join(word.capitalize() forwordins.split())
# 示例
text = "hello world python"
print(capitalize_words(text)) # "Hello World Python"7. 读取文件行数
defcount_lines(filename):
withopen(filename, 'r', encoding='utf-8') asf:
returnsum(1for_inf)
# 示例
line_count = count_lines('data.txt')
print(f"文件共有 {line_count} 行")8. 批量重命名文件
importos
defbatch_rename(folder, prefix):
fori, filenameinenumerate(os.listdir(folder), 1):
old_path = os.path.join(folder, filename)
new_name = f"{prefix}_{i}{os.path.splitext(filename)[1]}"
new_path = os.path.join(folder, new_name)
os.rename(old_path, new_path)9. 计算日期差
fromdatetimeimportdatetime
defdays_between(date1, date2):
d1 = datetime.strptime(date1, "%Y-%m-%d")
d2 = datetime.strptime(date2, "%Y-%m-%d")
returnabs((d2-d1).days)
# 示例
days = days_between("2024-01-01", "2024-03-20")
print(f"相差 {days} 天")10. 获取当前时间戳
importtime
timestamp = int(time.time())
print(f"当前时间戳: {timestamp}")11. 简单HTTP请求
importrequests
deffetch_url(url):
try:
response = requests.get(url, timeout=5)
returnresponse.status_code, response.text[:100]
exceptrequests.RequestExceptionase:
returnNone, str(e)
# 示例
status, content = fetch_url("https://httpbin.org/get")
print(f"状态码: {status}")12. 斐波那契数列(记忆化)
fromfunctoolsimportlru_cache
@lru_cache(maxsize=None)
deffibonacci(n):
ifn<2:
returnn
returnfibonacci(n-1) +fibonacci(n-2)
# 示例
print(fibonacci(10)) # 5513. 快速排序实现
defquick_sort(arr):
iflen(arr) <= 1:
returnarr
pivot = arr[len(arr)//2]
left = [xforxinarrifx<pivot]
middle = [xforxinarrifx == pivot]
right = [xforxinarrifx>pivot]
returnquick_sort(left) +middle+quick_sort(right)
# 示例
data = [3, 6, 8, 10, 1, 2, 1]
sorted_data = quick_sort(data)
print(sorted_data) # [1, 1, 2, 3, 6, 8, 10]14. 进度条显示
defprogress_bar(iteration, total, length=50):
percent = (iteration/total)
filled_length = int(length*percent)
bar = '█'*filled_length+'-'* (length-filled_length)
print(f'\r|{bar}| {percent:.1%}', end='\r')
ifiteration == total:
print()
# 示例
total_items = 100
foriinrange(total_items+1):
progress_bar(i, total_items)
time.sleep(0.01)15. 内存使用监控
importsys
defmemory_usage(obj):
returnsys.getsizeof(obj)
# 示例
data_list = [iforiinrange(1000)]
print(f"列表占用内存: {memory_usage(data_list)} 字节")16. 邮箱格式验证
importre
defis_valid_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
returnbool(re.match(pattern, email))
# 示例
print(is_valid_email("test@example.com")) # True
print(is_valid_email("invalid-email")) # False17. 密码强度检查
defcheck_password_strength(password):
iflen(password) <8:
return"弱"
has_upper = any(c.isupper() forcinpassword)
has_lower = any(c.islower() forcinpassword)
has_digit = any(c.isdigit() forcinpassword)
has_special = any(notc.isalnum() forcinpassword)
score = sum([has_upper, has_lower, has_digit, has_special])
ifscore == 4:
return"强"
elifscore>= 2:
return"中"
else:
return"弱"18. 多线程任务执行
importthreading
importtime
defworker(name, delay):
print(f"线程 {name} 开始")
time.sleep(delay)
print(f"线程 {name} 结束")
# 示例
threads = []
foriinrange(3):
t = threading.Thread(target=worker, args=(f"Thread-{i}", i+1))
threads.append(t)
t.start()
fortinthreads:
t.join()19. 优雅的错误处理装饰器
defhandle_errors(func):
defwrapper(*args, **kwargs):
try:
returnfunc(*args, **kwargs)
exceptExceptionase:
print(f"错误发生: {type(e).__name__}: {e}")
returnNone
returnwrapper
@handle_errors
defrisky_operation(x, y):
returnx/y
# 示例
result = risky_operation(10, 0) # 输出: 错误发生: ZeroDivisionError: division by zero20. JSON与Python对象互转
importjson
defsave_to_json(data, filename):
withopen(filename, 'w', encoding='utf-8') asf:
json.dump(data, f, ensure_ascii=False, indent=2)
defload_from_json(filename):
withopen(filename, 'r', encoding='utf-8') asf:
returnjson.load(f)
# 示例
data = {"name": "张三", "age": 25, "skills": ["Python", "Java"]}
save_to_json(data, "user.json")
loaded_data = load_from_json("user.json")
print(loaded_data)21. 素数判断
defis_prime(n):
ifn<2:
returnFalse
foriinrange(2, int(n**0.5) +1):
ifn%i == 0:
returnFalse
returnTrue
# 示例
print(is_prime(17)) # True
print(is_prime(20)) # False22. 最大公约数计算
defgcd(a, b):
whileb:
a, b = b, a%b
returna
# 示例
print(gcd(48, 18)) # 623. 中英文混合字符串长度计算
defmixed_string_length(s):
chinese_count = sum(1forcinsif'\u4e00'<= c<= '\u9fff')
english_count = len(s) -chinese_count
returnchinese_count*2+english_count
# 示例
text = "Hello世界Python编程"
print(f"混合长度: {mixed_string_length(text)}") # 2024. 获取系统信息
importplatform
defsystem_info():
info = {
"系统": platform.system(),
"版本": platform.version(),
"处理器": platform.processor(),
"Python版本": platform.python_version()
}
returninfo
# 示例
print(system_info())25. 图片尺寸获取
fromPILimportImage
defget_image_size(image_path):
withImage.open(image_path) asimg:
returnimg.size
# 示例
width, height = get_image_size("example.jpg")
print(f"图片尺寸: {width}x{height}")26. SQLite简单操作
importsqlite3
defcreate_db():
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
conn.commit()
conn.close()27. 提取网页链接
importre
defextract_urls(text):
pattern = r'https?://[^\s<>"]+|www\.[^\s<>"]+'
returnre.findall(pattern, text)
# 示例
html = '访问 <a href="https://www.example.com">示例网站</a> 和 http://test.com'
urls = extract_urls(html)
print(urls) # ['https://www.example.com', 'http://test.com']28. ZIP文件处理
importzipfile
defzip_files(files, zipname):
withzipfile.ZipFile(zipname, 'w') aszipf:
forfileinfiles:
zipf.write(file)
defunzip_file(zipname, extract_to):
withzipfile.ZipFile(zipname, 'r') aszipf:
zipf.extractall(extract_to)29. 函数执行时间测量
importtime
deftimer(func):
defwrapper(*args, **kwargs):
start = time.perf_counter()
result = func(*args, **kwargs)
end = time.perf_counter()
print(f"{func.__name__} 执行时间: {end - start:.6f}秒")
returnresult
returnwrapper
@timer
defslow_function():
time.sleep(1)
return"完成"
# 示例
slow_function()30. 简单数据标准化
defnormalize_data(data):
min_val = min(data)
max_val = max(data)
return [(x-min_val) / (max_val-min_val) forxindata]
# 示例
original = [10, 20, 30, 40, 50]
normalized = normalize_data(original)
print(normalized) # [0.0, 0.25, 0.5, 0.75, 1.0]这30个Python代码片段涵盖了从基础到进阶的多个应用场景,力求在最短的代码中实现最大的功能。掌握这些技巧不仅能提升编程效率,还能写出更优雅、更Pythonic的代码。
如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!
本文分享自 Nicholas与Pypi 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!