当前位置: 首页 > news >正文

【Python】Python中一些有趣的用法

Python是一种非常灵活和强大的编程语言,它有很多有趣的用法,以下是一些例子:

  1. 一行代码实现FizzBuzz

    print('\n'.join(['FizzBuzz'[i%3*4:i%5*8:-1] or str(i) for i in range(1, 101)]))
    
  2. 使用列表推导式生成斐波那契数列

    fib = [0, 1]
    [fib.append(fib[-2] + fib[-1]) for _ in range(10)]
    print(fib)
    
  3. 交换变量

    a, b = b, a
    
  4. 使用字符串的格式化方法打印图案

    print('\n'.join([''.join(['{:4}'.format(i*j) for i in range(1, 10)]) for j in range(1, 10)]))
    
  5. 递归计算阶乘

    def factorial(n):return 1 if n == 0 else n * factorial(n-1)
    print(factorial(5))
    
  6. 使用lambda表达式创建一个简单的计算器

    calc = {'+': lambda x, y: x + y,'-': lambda x, y: x - y,'*': lambda x, y: x * y,'/': lambda x, y: x / y
    }
    print(calc['*'](10, 2))
    
  7. 使用内置的dis模块查看字节码

    import dis
    dis.dis(lambda x: x**2)
    
  8. 使用reduce函数实现累加

    from functools import reduce
    print(reduce(lambda x, y: x + y, range(1, 101)))
    
  9. 利用字典实现switch-case结构

    def switch_case(case_value):return {'a': 'apple','b': 'banana','c': 'cherry'}.get(case_value, 'default')
    print(switch_case('b'))
    
  10. 生成器表达式

    squares = (x**2 for x in range(10))
    print(list(squares))
    
  11. 使用切片操作进行字符串反转

    original_string = "Hello, World!"
    reversed_string = original_string[::-1]
    print(reversed_string)
    
  12. 使用*操作符来解包列表

    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    combined_list = [*list1, *list2]
    print(combined_list)
    
  13. 使用map函数来应用函数到每个元素

    numbers = [1, 2, 3, 4, 5]
    squared = list(map(lambda x: x**2, numbers))
    print(squared)
    
  14. 使用filter函数来筛选元素

    numbers = range(10)
    even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
    print(even_numbers)
    
  15. 使用itertools模块进行迭代操作

    from itertools import chain, combinations
    def powerset(iterable):"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"s = list(iterable)return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
    print(list(powerset([1, 2, 3])))
    
  16. 使用with语句管理资源

    with open('example.txt', 'r') as file:content = file.read()
    print(content)
    
  17. 使用装饰器添加函数功能

def my_decorator(func):def wrapper():print("Something is happening before the function is called.")func()print("Something is happening after the function is called.")return wrapper@my_decoratordef say_hello():print("Hello!")say_hello()
  1. 使用类装饰器记录函数调用次数

    class CallCounter:def __init__(self, func):self.func = funcself.calls = 0def __call__(self, *args, **kwargs):self.calls += 1return self.func(*args, **kwargs)
    @CallCounter
    def say_hello():print("Hello!")
    say_hello()
    say_hello()
    print(say_hello.calls)  # Output will be 2
  2. 使用evalexec执行字符串中的代码

    code = "print('Hello from eval!')"
    eval(code)exec_code = """
    for i in range(3):print(f'Hello from exec {i}!')
    """
    exec(exec_code)
    
  3. 使用contextlib简化上下文管理器

    from contextlib import contextmanager
    @contextmanager
    def managed_resource(*args, **kwargs):# Set up the resourceresource = acquire_resource(*args, **kwargs)try:yield resourcefinally:# Clean up the resourcerelease_resource(resource)
    with managed_resource() as resource:# Use the resourcepass
    

以上这些例子展示了 Python 的许多有趣和强大的特性,如列表推导式、字典和集合的用法、lambda表达式、递归以及生成器、装饰器、上下文管理器、迭代器、生成器等,它们在编写高效和可读性强的代码时非常有用。这些特性使得 Python 在解决某些问题时显得格外简洁和高效。

http://www.lryc.cn/news/423297.html

相关文章:

  • RCE复现问题和研究
  • MySQL中的索引——适合创建索引的情况
  • 5款在线伪原创改写软件,智能改写文章效果好
  • opencv-python图像增强四:多曝光融合(方法一)
  • Qt 实战(9)窗体 | 9.2、QDialog
  • Spring 事务机制
  • Android 13 GMS 内置壁纸
  • 【LeetCode】234. 回文链表
  • 零基础学会机器学习,到底要多久?
  • 视频汇聚/安防监控综合平台EasyCVR接入海康私有协议EHOME显示失败是什么原因?
  • Qt解析XML
  • PwnLab: init-文件包含、shell反弹、提权--靶机渗透思路讲解
  • OpenCV—二值化Threshold()、adaptiveThreshold()
  • 第二天:java面向对象编程(OOP)
  • Selenium + Python 自动化测试07(滑块的操作方法)
  • 三防平板满足多样化定制为工业领域打造硬件解决方案
  • pytorch,用lenet5识别cifar10数据集(训练+测试+单张图片识别)
  • Word卡顿的处理方法
  • 在 Linux上常见的10大压缩格式解压命令和它们对应的压缩格式
  • 【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
  • 技术速递|使用 Native Library Interop 为 .NET MAUI 创建绑定
  • Linux笔记 --- 标准IO
  • 洛谷:B3625 迷宫寻路
  • 【C#】explicit、implicit与operator
  • Vue:Vuex-Store使用指南
  • 对经典动态规划问题【爬台阶】的一些思考
  • 开发一个能打造虚拟带货直播间的工具!
  • 汽车补光照明实验太阳光模拟器光源
  • MediaPipe人体姿态、手指关键点检测
  • 树上dp之换根dp