• 20个非常有用的单行Python代码片段


    1. 写在前面

    继上篇,继续在本文分享 20 个 Python 单行代码,可以在 30 秒或更短时间内轻松学会。这些单行代码不仅可以提高效率,同时使代码看起来更整洁、更易读。:)

    个人博客: https://jianpengzhang.github.io/
    CSDN博客: http://blog.csdn.net/u011521019
    公众号: 滑翔的纸飞机

    2. Python 单行代码

    2.1. 单行 for 循环

    for 循环是多行语句,但在 Python 中,可以使用列表推导在一行中编写 for 循环。例如,要过滤掉小于 250 的值,请看下面的代码示例。

    常规方式:
    In [3]: mylist = [200, 300, 400, 500]
    In [4]: result = []
    In [5]: for x in mylist:
       ...:     if x > 250:
       ...:         result.append(x)
       ...: 
    In [6]: print(result)
    [300, 400, 500]
    
    单行方式:
    In [7]: result = [x for x in mylist if x > 250]
    In [8]: print(result)
    [300, 400, 500]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.2. 单行 While 循环

    在一行中使用 While 循环代码,演示两种不同的方法。

    # Method 1 单一声明
    In [9]: while True: print(1) # 无限 1
    
    # Method 2 多重声明
    In [10]: x = 0
        ...: while x < 5: print(x); x= x + 1
    0
    1
    2
    3
    4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.3. 单行 if else 语句

    单行 if else 将使用三元运算符。三元运算符的语法是"[on true] if [expression] else [on false]"

    示例代码中展示 3 个示例,可以清楚地了解如何在单行 if-else 语句中使用三元运算符:

    # Example 1: if else 
    
    In [11]: print("Yes") if 8 > 9 else print("No")
    No
    
    # Example 2: if elif else: 从右至左进行判断
    
    In [15]: E = 2
    In [16]: print("High") if E == 5 else print("数据STUDIO") if E == 2 else print("Low")
    数据STUDIO
    
    # Example 3: only if 
     
    In [17]: if 3 > 2: print("Exactly")
    Exactly
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.4. 单行合并词典

    如何使用一行代码将两个字典合并为一个字典。在这里,介绍两种合并词典的方法:

    # 单行合并词典
    In [18]: d1 = { 'A': 1, 'B': 2 }
        ...: d2 = { 'C': 3, 'D': 4 }
        
    # Method1:
    In [19]: d1.update(d2)
        ...: print(d1)
    {'A': 1, 'B': 2, 'C': 3, 'D': 4}
    
    # Method2:
    In [20]: d3 = {**d1, **d2}
        ...: print(d3)
    {'A': 1, 'B': 2, 'C': 3, 'D': 4}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.5. 单行函数

    第一种方法,使用与三元运算符或单行循环方法相同的函数定义。
    第二种方法,使用 lambda 来定义函数。

    请看下面的示例代码,以便更清楚地理解:

    # 单行函数
    # Method1:
    In [21]: def fun(x): return True if x % 2 == 0 else False
        ...: print(fun(2))
    True
    
    # Method2:
    In [22]: fun = lambda x : x % 2 == 0
    In [23]: print(fun(2))
    True
    In [24]: print(fun(3))
    False
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.6. 单行递归

    如何在一行中使用递归。使用单行函数和单行 if-else 语句。下面是一个查找斐波那契数字的示例:

    # 单行递归
    #Fibonaci 单行递归示例
    In [25]: def Fib(x): return 1 if x in {0, 1} else Fib(x-1) + Fib(x-2)
    In [26]: print(Fib(5))
    8
    In [27]: print(Fib(15))
    987
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.7. 单行筛选数组

    使用 Python 列表推导方法可以在一行代码中完成对数组的筛选。下面是一个过滤偶数列表的示例:

    # 单行筛选数组
    # 常规方式:
    In [29]: result = []
        ...: for x in mylist:
        ...:     if x % 2 == 0:
        ...:         result.append(x)
        ...: print(result)
    [2, 8, 12]
    
    # 单行方式:
    In [30]: result = [x for x in mylist if x % 2 == 0]
        ...: print(result)
    [2, 8, 12]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.8. 单行异常处理

    我们使用异常来处理 Python 中的运行时错误。你知道我们可以在一行中编写 Try except 语句吗?通过使用 exec() 语句,我们就可以做到这一点。

    # 在一行中处理异常
    # 常规方式
    
    In [32]: try:
        ...:     print(x)
        ...: except:
        ...:     print("Error")
        ...: 
    Error
    
    # 单行方式
    In [34]: exec('try:print(x) \nexcept:print("Error")')
    Error
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    【注意:】谨慎使用 execeval , 其中 eval() 尽量用ast 模块的 literal()替换。

    2.9. 一行中将列表转换为字典

    使用 Python enumerate() 函数在一行内将列表转换为字典。将列表传递给 enumerate(),然后使用 dict() 将最终输出转换为字典格式。

    # 单行字典
    
    In [36]: mydict = ["John", "Peter", "Mathew", "Tom"]
        ...: mydict = dict(enumerate(mydict))
        ...: print(mydict)
    {0: 'John', 1: 'Peter', 2: 'Mathew', 3: 'Tom'}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.10. 单行多变量

    Python 允许在一行中进行多个变量赋值。下面的示例代码将向您展示如何做到这一点。

    # 在一行中分配多个变量。
    # 单行方法
    
    In [37]: x = 5
        ...: y = 7
        ...: z = 10
        ...: print(x , y, z)
    5 7 10
    
    # 单行方式
    In [38]: a, b, c = 5, 7, 10
        ...: print(a, b, c)
    5 7 10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.11. 单行数据交换

    在一行中交换值。交换值是编程中一项有趣的任务,但它总是需要第三个变量名 temp 来保存交换值。这个单行代码片段将告诉你如何在一行中交换值,而不需要任何临时变量。

    常规方式:
    In [1]: v1 = 100
       ...: v2 = 200
       ...: temp = v1
       ...: v1 = v2
       ...: v2 = temp
       ...: print(v1, v2)
    200 100
    
    单行方式:
    In [2]: v1, v2 = v2, v1
    ...: print(v1, v2)
    100 200
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.12. 单行排序

    排序是编程中常见的问题,Python 有许多内置方法来解决排序问题。下面的代码示例将展示如何用一行代码进行排序。

    In [3]: mylist = [32, 22, 11, 4, 6, 8, 12]
    
    # 常规方式
    In [4]: mylist.sort()
       ...: print(mylist)
    [4, 6, 8, 11, 12, 22, 32]
    
    # 单行方式
    In [5]: print(sorted(mylist))
    [4, 6, 8, 11, 12, 22, 32]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.13. 单行读取文件

    不使用语句或普通读取方法,也能正确读取文件的某一行。

    # 单行读取文件
    
    # 常规方式
    In [1]: with open("data.txt", "r") as file:
       ...:     data = file.readline()
       ...:     print(data)
       ...: 
    hello world
    
    # 单行方式
    In [3]: data = [line.strip() for line in open("data.txt","r")]
       ...: print(data)
    ['hello world', 'Hello Python']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.14. 单行类

    类总是多行工作。但在 Python 中,有一些方法可以在一行代码中使用类的特性。

    # 单行类
    # 常规方式
    
    In [5]: class Emp:
       ...:     def __init__(self, name, age):
       ...:         self.name = name
       ...:         self.age = age
       ...: emp1 = Emp("a44", 22)
       ...: print(emp1.name, emp1.age)
    a44 22
    
    # 当行方式
    # Method 1: 带有动态属性的 Lambda
    In [6]: Emp = lambda:None; Emp.name = "a44"; Emp.age = 22
       ...: print(Emp.name, Emp.age)
    a44 22
    
    # Method 2
    In [7]: from collections import namedtuple
       ...: Emp = namedtuple('Emp', ["name", "age"]) ("a44", 22)
       ...: print(Emp.name, Emp.age)
    a44 22
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    2.15. 单行分号

    在本代码片段中,展示了如何使用分号在一行中编写多行代码。

    In [8]: a = "Python"; b = "Programming"; c = "languages"; print(a, b, c)
    Python Programming languages
    
    • 1
    • 2

    2.16. 单行打印

    这不是一个重要代码片段,但有时在不需要使用循环来执行任务时,它可能会很有用。

    常规方式:
    In [9]: for x in range(1, 5):
       ...:     print(x)
       ...: 
    1
    2
    3
    4
    
    单行方式:
    In [10]: print(*range(1, 5))
    1 2 3 4
    
    In [11]: print(*range(1, 6))
    1 2 3 4 5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.17. 单行map函数

    map 函数是一个有用的高阶函数,它可以对每个元素应用一个函数。下面举例说明如何在一行代码中使用 map 函数。

    # 使用list()函数,来将返回的 map 转换成 list 列表
    In [12]: print(list(map(lambda a: a + 2, [5, 6, 7, 8, 9, 10])))
    [7, 8, 9, 10, 11, 12]
    
    # 示例: 字符串列表 转为大写字母
    In [13]: directions = ["north", "east", "south", "west"]
        ...: def to_upper_case(s): return s.upper() # 单行函数
        ...: print(list(map(to_upper_case, directions))) # 单行map处理
    ['NORTH', 'EAST', 'SOUTH', 'WEST']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    【备注】map(function, iterable, ...)

    • function - 针对每一个迭代调用的函数
    • iterable - 支持迭代的一个或者多个对象。在 Python 中大部分内建对象,例如 lists, dictionaries, 和 tuples 都是可迭代的。

    在 Python 3 中,map()返回一个与传入可迭代对象大小一样的 map 对象。
    在 Python 2中,这个函数返回一个列表 list。

    2.18. 删除列表多个元素

    使用 del 方法在一行代码中删除 List 中的多个元素,而无需进行任何修改。当然这里还有其他解决方式;

    In [19]: mylist = [100, 200, 300, 400, 500]
        ...: del mylist[1::2] # 下表1开始删除,步长2,mylist[1::2] =》[200, 400]
        ...: print(mylist)
    [100, 300, 500]
    
    • 1
    • 2
    • 3
    • 4

    2.19. print 打印重复内容

    In [30]: print(':)' * 3)
        ...: print(':)' * 2)
        ...: print(':)' * 1)
    :):):)
    :):)
    :)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.20. 一行代码就能查找某一范围内的质数

    如何编写一行代码来查找某一范围内的质数。

    In [31]: print(list(filter(lambda a: all(a % b != 0 for b in range(2, a)),
        ...:                   range(2,20))))
    [2, 3, 5, 7, 11, 13, 17, 19]
    
    • 1
    • 2
    • 3

    3. 最后

    感谢您花时间阅读文章
    关注公众号不迷路:)
  • 相关阅读:
    Haproxy
    什么是Jmeter ?Jmeter使用的原理步骤是什么?
    mybatisplus多条件对象xml分页查询
    这是我见过最牛逼的滑动加载前端框架
    哪些问题会让企业申报不了高新技术企业?
    QML 3D入门知识路线
    Typora+Node.js+PicGo搭建图床
    关于VSCODE的插件 一
    【一】redis简介
    多终端云同步文献管理:Zotero+TeraCloud(Windows+Android)
  • 原文地址:https://blog.csdn.net/u011521019/article/details/132867408