python 66 个冷知识 0716

66个有趣的Python冷知识

  1. 斐波那契数列生成器

    • 使用生成器函数可以轻松创建斐波那契数列:def fibonacci(): a, b = 0, 1; while True: yield a; a, b = b, a + b
  2. 无穷迭代器

    • itertools.count(start=0, step=1) 创建一个无穷迭代器。
  3. 轮流切换

    • 使用 itertools.cycle(iterable) 在提供的序列中循环切换。
  4. 笛卡尔积

    • itertools.product(*iterables) 计算多个迭代器的笛卡尔积。
  5. 字符到整数

    • 使用 ord() 将字符转换为对应的ASCII码。
  6. 整数到字符

    • 使用 chr() 将ASCII码转换为对应的字符。
  7. 默认参数捕获

    • 默认参数在函数定义时计算一次:def func(x=[]): x.append(1); return x
  8. 自定义异常消息

    • 自定义异常类可以提供更多的信息:class MyException(Exception): pass; raise MyException("Custom message")
  9. 复数支持

    • Python内置支持复数类型:z = 1 + 2j
  10. 时间睡眠

    • 使用 time.sleep(seconds) 让程序暂停指定时间。
  11. 枚举类型

    • 使用 enum 模块创建枚举类型:from enum import Enum; class Color(Enum): RED = 1; GREEN = 2; BLUE = 3
  12. 递归函数

    • Python支持递归函数调用:def factorial(n): return 1 if n == 0 else n * factorial(n - 1)
  13. 快速排序

    • 可以用递归实现快速排序:def quicksort(arr): if len(arr) <= 1: return arr; pivot = arr[len(arr) // 2]; left = [x for x in arr if x < pivot]; middle = [x for x in arr if x == pivot]; right = [x for x in arr if x > pivot]; return quicksort(left) + middle + quicksort(right)
  14. 冒泡排序

    • 冒泡排序的实现:def bubble_sort(arr): for i in range(len(arr)): for j in range(0, len(arr) - i - 1): if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j]
  15. 装饰器传递参数

    • 装饰器可以接受参数:def decorator_with_args(arg): def decorator(func): def wrapper(*args, **kwargs): print(f"Argument: {arg}"); return func(*args, **kwargs); return wrapper; return decorator
  16. 类变量和实例变量

    • 类变量在所有实例中共享,而实例变量每个实例独有:class MyClass: class_var = 0; def __init__(self): self.instance_var = 0
  17. 类的私有变量

    • 使用双下划线前缀定义私有变量:class MyClass: def __init__(self): self.__private_var = 0
  18. 元组作为字典键

    • 元组可以作为字典键:d = {(1, 2): "value"}
  19. 文件的行数

    • 快速统计文件的行数:num_lines = sum(1 for line in open('file.txt'))
  20. 字典默认值

    • 使用 collections.defaultdict 设置字典的默认值:from collections import defaultdict; d = defaultdict(int)
  21. 命名参数传递

    • 可以在函数调用时使用命名参数:def func(a, b): return a + b; result = func(b=1, a=2)
  22. 返回多个值

    • 函数可以返回多个值:def func(): return 1, 2; a, b = func()
  23. 反向字符串

    • 使用切片反转字符串:reversed_str = 'hello'[::-1]
  24. 从字符串生成字节

    • 使用 bytes() 将字符串转换为字节:byte_data = bytes('hello', 'utf-8')
  25. 格式化时间

    • 使用 strftime 格式化时间:import time; formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
  26. 迭代多个列表

    • 使用 zip 并行迭代多个列表:for a, b in zip(list1, list2):
  27. 求数组最大公约数

    • 使用 math.gcd 求最大公约数:from math import gcd; result = gcd(8, 12)
  28. 带索引的迭代

    • 使用 enumerate 获取索引和值:for index, value in enumerate(list):
  29. 列表去重

    • 使用 set 去重:unique_list = list(set(my_list))
  30. 随机选择

    • 使用 random.choice 从列表中随机选择一个元素:import random; element = random.choice(my_list)
  31. 字符串拼接

    • 使用 join 高效拼接字符串:joined_str = ' '.join(list_of_strings)
  32. 列表解析嵌套

    • 列表解析可以嵌套:nested_list = [[i, j] for i in range(3) for j in range(3)]
  33. 列表中最小值

    • 使用 min 获取列表中的最小值:min_value = min(my_list)
  34. 读取二进制文件

    • 使用 'rb' 模式打开二进制文件:with open('file.bin', 'rb') as file:
  35. 写入二进制文件

    • 使用 'wb' 模式写入二进制文件:with open('file.bin', 'wb') as file:
  36. 位移操作

    • 使用 <<>> 进行位移操作:shifted = value << 2
  37. 文件遍历

    • 使用 os.walk 遍历目录:import os; for root, dirs, files in os.walk('path'):
  38. 进程池

    • 使用 multiprocessing.Pool 创建进程池:from multiprocessing import Pool; with Pool(5) as p: p.map(func, iterable)
  39. 生成器表达式

    • 使用生成器表达式节省内存:gen = (x*x for x in range(10))
  40. 基本HTTP服务器

    • 使用 http.server 快速启动一个HTTP服务器:python -m http.server
  41. 合并两个字典

    • 使用 ** 操作符合并字典:merged_dict = {**dict1, **dict2}
  42. 单行if语句

    • 可以在单行中使用if语句:x = 10 if condition else 20
  43. 默认可变参数

    • 使用不可变对象作为默认参数:def func(x=None): if x is None: x = []
  44. 冻结字典

    • 使用 types.MappingProxyType 创建不可变字典:from types import MappingProxyType; frozen_dict = MappingProxyType(my_dict)
  45. 查找文件扩展名

    • 使用 os.path.splitext 获取文件扩展名:import os; ext = os.path.splitext('file.txt')[1]
  46. 路径组合

    • 使用 os.path.join 组合路径:path = os.path.join('folder', 'file.txt')
  47. 字符串对齐

    • 使用 str.ljust, str.rjust, str.center 对齐字符串。
  48. 清空列表

    • 使用切片清空列表:my_list[:] = []
  49. 从列表中移除元素

    • 使用列表解析移除元素:filtered_list = [x for x in my_list if x != value]
  50. 对象相等性

    • 使用 == 检查对象相等性,而非 is
  51. 生成UUID

    • 使用 uuid.uuid4() 生成随机UUID:import uuid; id = uuid.uuid4()
  52. 格式化数字

    • 使用 format 格式化数字:formatted_number = format(1234567, ',')
  53. 字符串转日期

    • 使用 datetime.strptime 解析字符串为日期:from datetime import datetime; date = datetime.strptime('2021-01-01', '%Y-%m-%d')
  54. 求数组最小公倍数

    • 使用 math.lcm 求最小公倍数:from math import lcm; result = lcm(8, 12)
  55. 转换为二进制

    • 使用 bin() 将整数转换为二进制字符串:binary_str = bin(10)
  56. 转换为十六进制

    • 使用 hex() 将整数转换为十六进制字符串:hex_str = hex(10)
  57. 字典键值对排序

    • 使用 sorted 对字典键值对进行排序:sorted_dict = dict(sorted(my_dict.items(), key=lambda item: item[1]))
  58. 序列化为JSON

    • 使用 json.dumps 序列化对象为JSON字符串:import json; json_str = json.dumps(my_dict)
  59. 反序列化JSON

    • 使用 json.loads 反序列化JSON字符串为对象:import json; my_dict = json.loads(json_str)
  60. 自定义排序

    • 使用 sortedlambda 自定义排序:sorted_list = sorted(my_list, key=lambda x: x[1])
  61. 文件是否存在

    • 使用 os.path.exists 检查文件是否存在:import os; exists = os.path.exists('file.txt')
  62. 创建目录

    • 使用 os.makedirs 递归创建目录:import os; os.makedirs('path/to/directory', exist_ok=True)
  63. 删除目录

    • 使用 os.rmdir 删除空目录:import os; os.rmdir('path/to/directory')
  64. 删除文件

    • 使用 os.remove 删除文件:import os; os.remove('file.txt')
  65. 获取当前时间戳

    • 使用 time.time() 获取当前时间戳:import time; timestamp = time.time()
  66. 读取环境变量

    • 使用 os.getenv 读取环境变量:import os; value = os.getenv('ENV_VAR', 'default_value')
  • 24
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trust Tomorrow

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值