列表推导式,三元表达式,断言,with-as

发布时间:2024年01月22日

最近在看python需要掌握的知识,发现这四个概念都非常陌生,于是开始自学。四个部分,列表推导式,三元表达式,断言,with-as

列表推导式

列表推导式,就是快速建立一个列表,用到的比较多的是range。

举个例子:

a=[]
for i in range(1,5,1):
    print(i)
    a.append(i)
print(a)    
1
2
3
4
[1, 2, 3, 4]

range(开始,结束,间隔)

搞个帅气一点的:

a=[i for i in range(1,10,2)]
print(a)
#[1, 3, 5, 7, 9]

循环体里面,变量要一致。列表推导式就是把循环,range函数放在一行,使代码实现了简洁性。

a=[i for i in range(0,50,3) if i % 2 == 0]
print(a)
#[0, 6, 12, 18, 24, 30, 36, 42, 48]

我们把代码拆开来看:

a=[]#创建一个空列表
for i in range(0, 50, 3):#从0开始,到50结束,50=取不到,间隔3
    if i % 2 == 0:#如果i除以2等于零
        a.append(i)#把i添加到a这个列表里面
print(a)#打印a
#结果:[0, 6, 12, 18, 24, 30, 36, 42, 48]

你会发现使用列表推导式的方便,但是代码的可读性也很重要,我觉得第二种读起来舒服。

我们继续看例子:

a=[i * 10 for i in 'qwq']
print(a)
#['qqqqqqqqqq', 'wwwwwwwwww', 'qqqqqqqqqq']

这次是从遍历数组,变成遍历字符串了。

在列表推导式里面还可以进行双循环。我们再看一个例子:

a=[(i*3, a*a) for i in range(1, 3) for a in range(1, 10, 3)]
print(a)
#[(3, 1), (3, 16), (3, 49), (6, 1), (6, 16), (6, 49)]
result = []  
for i in range(1, 3):  # 外层循环  
    for a in range(1, 10, 3):  # 内层循环  
        result.append((i*3, a*a))    
a = result  
print(a)

上面的双循环,下面的进行了拆分。个人觉得都可以写,但是一定要知道列表推导式的概念和形式,不然和我一样,遇到了还以为是新东西,其实就是range函数。

三元表达式:

三元表达式是什么:在Python中,三元表达式是一种简洁的表达式,用于根据一个条件表达式的结果返回两个可能值中的一个。其语法如下:

value_if_true if condition else value_if_false

如果条件表达式为真,则返回value_if_true;否则返回value_if_false

下面是一个使用三元表达式的示例:

x = 5  
result = "x 大于 3" if x > 3 else "x 小于等于 3"  
print(result)  # 输出 "x 大于 3"

在上面的示例中,如果变量x的值大于3,则将返回字符串"x 大于 3";否则将返回字符串"x 小于等于 3"。在这个例子中,因为x的值是5,所以返回了"x 大于 3"。

断言:

在Python中,断言(assert)是一个用于测试程序中的某个条件是否为真的语句。如果条件为真,则断言通过;如果条件为假,则触发一个AssertionError异常。

断言的语法如下:

assert condition, "error message"

其中,condition是要测试的条件,"error message"是当条件为假时显示的错误消息。

下面是一个使用断言的示例:

x = 5  
assert x > 0, "x必须大于0"  
print("断言通过")
#断言通过

我们改变参数看一下:

x = 5  
assert x > 8, "x必须大于0"  
print("断言通过")

结果:

Traceback (most recent call last):
  File "d:\project5\demo1\demo4.py", line 2, in <module>
    assert x > 8, "x必须大于0"
AssertionError: x必须大于0

在这个例子中,断言测试了变量x是否大于0。由于x的值是5,所以断言通过,程序将输出"断言通过"。

如果将x的值改为小于或等于0的数,例如x = -1,则断言将失败,程序将触发一个AssertionError异常,并显示错误消息"x必须大于0"。

需要注意的是,断言主要用于调试和测试目的。在生产代码中,不应该使用断言来处理程序的正常逻辑。

with-as

Python中的with as语句主要用于管理资源,确保在访问资源时无论是否发生异常都能执行必要的“清理”操作,释放资源。常见于文件处理、数据库连接和网络连接等场景。

with as语句的基本语法格式为:

with expression [as target] :  
    code_block

其中,expression是一个需要执行的表达式,target是一个变量或元组,用于存储expression执行后的结果。如果省略as target部分,with as语句会执行expression并自动执行相应的清理操作,但不会将结果存储在任何变量中。

使用with as语句可以简化代码,同时确保在异常发生时能够正确地清理资源。通过这种方式,可以在语句开始时创建资源,并在语句执行完毕时自动释放资源,从而确保程序在最短的时间内完成操作。

举个例子,假设我们要打开一个文件并逐行读取内容,我们可以使用以下代码:

with open('file.txt', 'r') as f:  
    for line in f:  
        print(line)

在这个例子中,open('file.txt', 'r')返回一个文件对象,并将其存储在变量f中。在with as语句的代码块中,我们使用for line in f逐行读取文件内容并打印出来。当代码块执行完毕时,文件对象会自动关闭,释放资源。

需要注意的是,被求值对象必须实现__enter__()__exit__()这两个方法才能被用于with as语句。这两个方法分别在语句开始时和执行完毕时被自动调用,以确保资源的正确创建和释放。

总之,Python中的with as语句提供了一种方便、安全的方式来管理资源,确保资源的正确使用和释放。通过使用with as语句,我们可以编写更加简洁、易读的代码,同时避免因资源泄漏而导致的问题。

文章来源:https://blog.csdn.net/qq_54122113/article/details/135696422
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。