1.实现一个斐波那契数列生成器
在Python中,你可以使用生成器函数来创建一个斐波那契数列生成器。生成器函数允许你按需生成值,而不是一次性生成所有值,这对于节省内存特别有用。以下是一个示例:
python复制代码
def fibonacci(n): | |
a, b = 0, 1 | |
for _ in range(n): | |
yield a | |
a, b = b, a + b | |
# 使用生成器 | |
for num in fibonacci(10): | |
print(num) |
在这个例子中,fibonacci 是一个生成器函数,它使用 yield 关键字来逐个生成斐波那契数列的值。yield 会暂停函数的执行,直到下一次调用该函数时再继续执行。
当你调用 fibonacci(10) 时,这个函数会返回一个生成器对象。然后,你可以使用 for 循环来遍历这个生成器,每次迭代都会从生成器中获取一个值,直到生成器耗尽(在这个例子中是生成了前10个斐波那契数)。
注意,这个生成器函数是无限的,也就是说,它会一直生成斐波那契数列的值,直到你停止遍历它。在这个例子中,我们通过 range(n) 来限制生成的值的数量,但你可以根据需要修改这个逻辑。
2.实现一个链表并进行反转
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。反转链表就是将链表中节点的链接方向反转,使链表的尾节点变为头节点,头节点变为尾节点。
下面是一个简单的 Python 程序,实现了一个链表并进行反转:
python复制代码
class ListNode: | |
def __init__(self, val=0, next=None): | |
self.val = val | |
self.next = next | |
def print_list(head): | |
current = head | |
while current: | |
print(current.val, end=" -> ") | |
current = current.next | |
print("None") | |
def reverse_list(head): | |
prev = None | |
current = head | |
while current: | |
next_node = current.next | |
current.next = prev | |
prev = current | |
current = next_node | |
return prev | |
# 创建一个链表:1 -> 2 -> 3 -> 4 -> 5 | |
head = ListNode(1) | |
head.next = ListNode(2) | |
head.next.next = ListNode(3) | |
head.next.next.next = ListNode(4) | |
head.next.next.next.next = ListNode(5) | |
print("原始链表:") | |
print_list(head) | |
# 反转链表 | |
new_head = reverse_list(head) | |
print("反转后的链表:") | |
print_list(new_head) |
这个程序首先定义了一个 ListNode 类,表示链表的一个节点。然后定义了一个 print_list 函数,用于打印链表的内容。reverse_list 函数则是用于反转链表的,它使用三个指针(prev,current 和 next_node)来遍历链表并反转节点的链接方向。最后,我们创建了一个链表并打印其原始内容和反转后的内容。
本文介绍了如何在Python中使用生成器函数实现斐波那契数列生成器以节省内存,并详细讲解了链表的构造与反转过程,包括ListNode类和reverse_list函数的实现。
628

被折叠的 条评论
为什么被折叠?



