python异常处理及列表推导式、生成器、迭代器

1、抛出异常

try:  
    # 可能引发异常的代码  
    result = some_operation()  
except ValueError as e:  
    # 处理 ValueError 异常  
    print("发生 ValueError 异常:", e)  
except Exception as e:  
    # 处理其他类型的异常  
    print("发生未知异常:", e)  
else:  
    # 如果 try 块没有引发任何异常,执行此代码块  
    print("操作成功,结果是:", result)  
finally:  
    # 无论是否发生异常,都会执行此代码块  
    print("执行清理操作...")

2、列表推导式

new_list = [x for x in iterable if x is True]
# new_list 是新生成的列表。
# expression 是对每个元素进行操作的表达式,通常涉及item。
# item 是从可迭代对象 iterable 中获取的每个元素。
# iterable 是一个可迭代对象,如列表、元组、字典、字符串等。
# if condition 是可选的条件语句,用于过滤元素。
new_list2 = [x+y for x in iterable if x is True for y in iterable if y is True]

3、三元运算符、添加表达式

value_if_true if condition else value_if_false

max_value = 0 if 0 > 1 else 1

3、生成器

在Python中,yield是一个关键字,它用于在函数中定义一个生成器(generator)。生成器是一种特殊类型的迭代器,它允许你按需生成值,而不是一次性计算所有值并将它们存储在内存中。这可以节省大量内存,特别是在处理大数据集时。

def simple_generator():  
    yield 1  
    yield 2  
    yield 3  
  
# 创建一个生成器对象  
gen = simple_generator()  
  
# 迭代生成器并打印值  
for value in gen:  
    print(value end="\t")
#1    2    3

还可以利用推导式写生成器

#生成器(吧列表推导式的[]改成())
g1 = (i if i%5==0 else i-1 for i in range(0,100) if i%2==0 and i%3==0)    #<generator object <genexpr> at 0x7fc78012d820>
g1.__next__()    # 0
next(g1)      # 5

4、迭代器

在Python中,迭代器(Iterator)是一个可以记住遍历的位置的对象。迭代器对象必须实现两个方法,__iter__() 和 __next__()。字符串,列表或元组等数据类型可用于for循环是因为它们都是可迭代的。

#迭代器
list = range(10)
i1 = iter(list)
print(i1.__next__())
print(next(i1))
  1. 生成器一定是迭代器:生成器自动创建了 __iter__() 和 __next__() 内置方法,仅仅保存了一套生成数值的算法,调用时,才去计算然后返回一个值。所以生成器一定是迭代器。
  2. 迭代器不一定是生成器:迭代器主要是用来访问容器的方式,比如说 list、tuple 或者是 dict。迭代器只能往前不会后退,具有记忆功能,从集合的第一个元素开始访问,直到所有的元素被访问完结束。但不是所有的迭代器都是生成器,只有使用了 yield 的函数才被称为生成器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值