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))
- 生成器一定是迭代器:生成器自动创建了
__iter__()
和__next__()
内置方法,仅仅保存了一套生成数值的算法,调用时,才去计算然后返回一个值。所以生成器一定是迭代器。- 迭代器不一定是生成器:迭代器主要是用来访问容器的方式,比如说 list、tuple 或者是 dict。迭代器只能往前不会后退,具有记忆功能,从集合的第一个元素开始访问,直到所有的元素被访问完结束。但不是所有的迭代器都是生成器,只有使用了 yield 的函数才被称为生成器。