欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 白骑士的Python教学进阶篇 2.4 高级数据结构

白骑士的Python教学进阶篇 2.4 高级数据结构

2024/11/30 12:38:49 来源:https://blog.csdn.net/JeremyTC/article/details/140042708  浏览:    关键词:白骑士的Python教学进阶篇 2.4 高级数据结构

系列目录

上一篇:白骑士的Python教学进阶篇 2.3 文件操作​​​​​​​

        在Python中,掌握高级数据结构可以显著提升你的编程效率和代码可读性。高级数据结构包括列表推导式、生成器与迭代器以及装饰器。本文将详细介绍这些高级数据结构,帮助你在实际编程中更好地运用它们。

列表推导式

        列表推导式(List Comprehensions)是Python的一种简洁的语法,用于生成新的列表。通过列表推导式,可以用一行代码表达复杂的列表生成逻辑,增强代码的可读性和简洁性。

基本语法

        列表推导式的基本语法如下:

[expression for item in iterable if condition]

        'expression':生成新列表中元素的表达式。

        ’item‘:从 ‘iterable’ 中取出的元素。

        'iterable':一个可迭代对象,如列表、元组、字符串等。

        ’condition‘:一个可选的过滤条件,只有满足条件的元素才会包含在新列表中。

示例

        生成平方数列表:

squares = [x ** 2 for x in range(10)]
print(squares)

        输出:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

        过滤偶数并生成其平方:

even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)

        输出:

[0, 4, 16, 36, 64]

        使用嵌套循环生成二维坐标:

coordinates = [(x, y) for x in range(3) for y in range(3)]
print(coordinates)

        输出:

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

生成器与迭代器

        生成器和迭代器是Python中用于高效处理大量数据的强大工具。它们可以在不占用大量内存的情况下生成序列数据。

迭代器

        迭代器是一种对象,它实现了迭代协议,包括 '__iter__()' 和 '__next__()' 方法。迭代器可以用于逐个访问集合的元素,而不需要一次性将所有元素加载到内存中。

示例

class MyIterator:def __init__(self, data):self.data = dataself.index = 0def __iter__(self):return selfdef __next__(self):if self.index >= len(self.data):raise StopIterationresult = self.data[self.index]self.index += 1return resultmy_iter = MyIterator([1, 2, 3])
for item in my_iter:print(item)

        输出:

1
2
3

生成器

        生成器是使用 'yield' 关键字的函数。每次调用生成器的 '__next__()' 方法时,生成器函数会运行到 'yield' 语句并返回结果,然后暂停,下一次调用时从暂停处继续执行。

示例

        简单生成器:

def simple_generator():yield 1yield 2yield 3gen = simple_generator()for value in gen:print(value)

        输出:

1
2
3

        无限斐波那契序列生成器:

def fibonacci():a, b = 0, 1while True:yield aa, b = b, a + bfib = fibonacci()for _ in range(10):print(next(fib))

        输出:

0
1
1
2
3
5
8
13
21
34

        生成器表达式是生成器的简写形式,类似于列表推导式,但使用小括号而不是方括号。

gen_exp = (x ** 2 for x in range(10))for value in gen_exp:print(value)

装饰器

        装饰器是一种高级函数,它允许你在不修改函数代码的前提下,增强或修改函数的行为。装饰器通常用于日志记录、权限检查、缓存等场景。

基本语法

        装饰器是一个返回函数的高阶函数,通常使用 '@decorator_name' 语法糖来应用装饰器。

示例

        基本装饰器:

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()

        输出:

Something is happening before the function is called.
Hello!
Something is happening after the function is called.

        带参数的装饰器:

def repeat(num_times):def decorator_repeat(func):def wrapper(*args, **kwargs):for _ in range(num_times):result = func(*args, **kwargs)return resultreturn wrapperreturn decorator_repeat@repeat(num_times=3)
def greet(name):print(f"Hello, {name}!")greet("Alice")

        输出:

Hello, Alice!
Hello, Alice!
Hello, Alice!

        类装饰器:

class CountCalls:def __init__(self, func):self.func = funcself.num_calls = 0def __call__(self, *args, **kwargs):self.num_calls += 1print(f"Call {self.num_calls} of {self.func.__name__}")return self.func(*args, **kwargs)@CountCalls
def say_hello():print("Hello!")say_hello()
say_hello()

        输出:
 

Call 1 of say_hello
Hello!
Call 2 of say_hello
Hello!

结论

        高级数据结构如列表推导式、生成器与迭代器以及装饰器,是Python提供的强大工具,使开发者可以编写简洁、高效、可维护的代码。通过掌握这些高级特性,可以在实际项目中更灵活地处理复杂的数据操作,提高代码的执行效率,并且能够在不改变原有代码逻辑的情况下,轻松地扩展和增强功能。这些特性不仅提升了编程技能,也为解决实际问题提供了更多的解决方案。希望在实践中多多应用这些高级数据结构,享受Python编程的乐趣。

下一篇:白骑士的Python教学高级篇 3.1 多线程与多进程​​​​​​​

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com