Lab4_Python序列结构基本用法二1
需积分: 0 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的序列结构如列表和集合,提供了灵活且高效的数据管理方式。在实现特定算法如埃拉托斯特尼筛法时,我们可以根据需求选择合适的数据结构,利用其特性来优化代码性能。在上述示例中,虽然两种方法都能找到素数,但集合在查找效率上优于列表,因为它的成员运算速度更快。
忧伤的石一
- 粉丝: 31
- 资源: 332
最新资源
- finger-server-0.17-52.el7.x64-86.rpm.tar.gz
- fio-3.7-2.el7.x64-86.rpm.tar.gz
- 基于CAVLC 拖 尾 系数的H.264AVC 视 频 信息 隐 藏算法.pdf
- fipscheck-devel-1.4.1-6.el7.x64-86.rpm.tar.gz
- 超级好用的比较工具,版本2.16.8 64位
- fipscheck-lib-1.4.1-6.el7.x64-86.rpm.tar.gz
- firefox-115.12.0-1.el7.centos.x64-86.rpm.tar.gz
- firewall-applet-0.6.3-13.el7-9.x64-86.rpm.tar.gz
- firewall-config-0.6.3-13.el7-9.x64-86.rpm.tar.gz
- 第11讲:深入理解指针(1).pdf
- 第14讲:深入理解指针(4).pdf
- 第13讲:深入理解指针(3).pdf
- 第9讲:函数递归.pdf
- 第10讲:操作符详解.pdf
- 第15讲:深入理解指针(5).pdf
- 第3讲:分支和循环(上).pdf