Lab4_Python序列结构基本用法二1

preview
需积分: 0 1 下载量 159 浏览量 更新于2022-08-03 收藏 28KB PDF 举报
**Python序列结构基础** 在Python编程中,序列是数据结构的一种基本形式,它包括但不限于列表、元组和字符串。在这个话题中,我们将专注于列表和集合,以及如何利用它们来实现特定的功能,例如找到小于给定数值的所有素数。 让我们深入理解列表。列表是一种可变的数据结构,允许我们存储任意类型的元素,并且可以进行增删改查等操作。在给定的代码段中,我们看到一个例子,使用列表来实现**埃拉托斯特尼筛法(Eratosthenes Sieve)**,一种寻找素数的经典算法。 1. **使用列表实现埃拉托斯特尼筛法** ```python import math n = int(input('Please input a number:')) list = [] # 创建空列表 corr_idx = 0 for i in range(2, n): list.append(i) index = list[corr_idx] while index < math.sqrt(n): flag = index index += flag while index <= n: if index in list: list.remove(index) index += flag corr_idx += 1 index = list[corr_idx] print(list) ``` 这段代码首先读取用户输入的数字`n`,然后创建一个从2到`n-1`的列表。接下来,遍历列表,对每个元素(假设为素数),将它的倍数从列表中移除。这样,当遍历结束时,留下的就是小于`n`的所有素数。 2. **使用集合实现埃拉托斯特尼筛法** 集合是另一种不可变的数据结构,它不包含重复元素。在寻找素数的过程中,集合可以更快地检查元素是否存在于其中,因为它支持O(1)时间复杂度的成员运算。下面的代码展示了如何用集合来实现同样的功能: ```python import math n = int(input('Please input a number:')) set = {0} prime = {0} for i in range(2, n): set.add(i) set.remove(0) index = set.pop() prime.add(index) prime.remove(0) while index < math.sqrt(n): flag = index index += flag while index <= n: if index in set: set.remove(index) index += flag index = set.pop() prime.add(index) print(sorted(prime.union(set))) ``` 这段代码首先创建两个集合,一个用于所有可能的数,另一个用于存储素数。然后,通过类似的方法,从`set`中移除非素数,同时将素数添加到`prime`集合中。通过`prime.union(set)`合并两个集合,以确保没有遗漏,并用`sorted()`函数返回排序后的结果。 总结来说,Python的序列结构如列表和集合,提供了灵活且高效的数据管理方式。在实现特定算法如埃拉托斯特尼筛法时,我们可以根据需求选择合适的数据结构,利用其特性来优化代码性能。在上述示例中,虽然两种方法都能找到素数,但集合在查找效率上优于列表,因为它的成员运算速度更快。
身份认证 购VIP最低享 7 折!
30元优惠券