首页 > 编程语言 >【Python】Python中一些有趣的用法

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

时间:2024-08-09 23:24:40浏览次数:8  
标签:resource Python list 用法 range print 有趣 def lambda

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_decorator
 def say_hello():
     print("Hello!")
 say_hello()
 
  1. 使用类装饰器记录函数调用次数

    class CallCounter:
        def __init__(self, func):
            self.func = func
            self.calls = 0
        def __call__(self, *args, **kwargs):
            self.calls += 1
            return 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 resource
        resource = acquire_resource(*args, **kwargs)
        try:
            yield resource
        finally:
            # Clean up the resource
            release_resource(resource)
    with managed_resource() as resource:
        # Use the resource
        pass
    

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

标签:resource,Python,list,用法,range,print,有趣,def,lambda
From: https://blog.csdn.net/Young_Pro/article/details/141072786

相关文章

  • OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 +
    本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。原文链接:手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤+源码)导 读    本文将手把手教你用Python和OpenCV搭建一个半自动标注工具(包含详细步骤+源码)。背景介绍    样本标......
  • Python教程(十三):常用内置模块详解
    目录专栏列表1.`os`模块2.`sys`模块3.`re`模块4.`json`模块5.`datetime`模块6.`math`模块7.`random`模块8.`collections`模块9.`itertools`模块10.`threading`模块总结专栏列表Python教程(十):面向对象编程(OOP)Python教程(十一):单元测试与异常捕获Py......
  • Arrays类、Random类和包装类(8大基本数据类型)的用法
    1、Arrays:是java提供专门针对数据做操作的工具类,该类没有构造方法,且方法都是静态的  成员方法:    publicstaticStringtoString(int[]a)将任意一个数组中的所有元素以字符串的形式拼接返回    publicstaticvoidsort(int[]a)冒泡排序  ......
  • 2024年华为OD机试真题-求幸存数之和-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】_华为od机试csdn-CSDN博客 题目描述给一个正整数数列nums,一个跳数jump,及幸存数量left。运算过程为:从索引0的位置开始向后跳,中间跳过J个数字,命中索引为J+1的数字,该数被敲出,并从该点起跳,以此类推,直到幸存le......
  • 使用Python+moviepy做音频的淡入淡出效果
    一、音频的淡入效果frommoviepy.editorimport*au=AudioFileclip("/home/Download/test.mp3")au=au.fx(afx.audiofadein,duration=1)#一秒钟的淡入效果au.write_audiofile("/home/Download/fade.mp3")二、音频的淡出效果frommoviepy.editorimport*au=Audio......
  • 使用Python操作MySQL的多种方式
    目录MySQL简介安装与配置使用MySQLConnector/Python连接数据库执行SQL语句处理查询结果事务管理使用SQLAlchemy安装SQLAlchemy连接数据库定义模型执行查询事务管理使用DjangoORM安装Django配置数据库定义模型执行查询事务管理总结MySQL简介MySQL是一种开源的关系......
  • Python和AI库NumPy(三):数组形状与变换
    目录1.数组的基础形状操作1.1查看数组的形状1.2改变数组的形状2.数组的转置与轴交换2.1数组的转置2.2交换数组的轴3.数组的合并与分割3.1数组的水平与垂直合并3.2数组的分割4.高级数组变换技巧4.1广播机制(Broadcasting)4.2使用expand_dims()和squeeze()......
  • 猫头虎 分享:Python库 Tornado 的简介、安装、用法详解入门教程
    ......
  • 猫头虎分享:Python库 FastAPI 的简介、安装、用法详解入门教程
    ......
  • python-约瑟夫环(赛氪OJ)
    [题目描述]n 个人( 0,1,2,3,4...n−1 ),围成一圈,从编号为 k 的人开始报数,报数报到 m 的人出队。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定 n ,k ,m 。请你求出大王的编号。输入格式:输入一行包含三个整数 n , ......