Python 脚本,使用集合方法从一个包含 5000 个数字的列表中选出 10 个最大的数,并打印它们和它们的索引。
时间: 2024-03-02 10:50:15 浏览: 22
可以使用以下 Python 脚本来实现:
```python
# 生成一个包含 5000 个数字的列表
numbers = [i for i in range(5000)]
# 使用集合方法找出 10 个最大的数
max_numbers = sorted(numbers)[-10:]
# 打印它们和它们的索引
for i, number in enumerate(max_numbers):
print(f"第{i+1}个最大的数是{number},索引是{numbers.index(number)}。")
```
该脚本首先生成一个包含 5000 个数字的列表,然后使用 `sorted()` 方法将其排序,并选出最大的 10 个数。接着,使用 `enumerate()` 函数遍历这 10 个最大的数,并打印它们和它们在原始列表中的索引。
相关问题
python脚本,利用集合方法从5000个书中选出10个最大的数,并把10个数的次序号码打印出来
下面是一个简单的 Python 脚本,使用集合方法从一个包含 5000 个数字的列表中选出 10 个最大的数,并打印它们的索引。
```python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
sorted_numbers = sorted(numbers, reverse=True)[:10]
for number in sorted_numbers:
print(numbers.index(number))
```
这个脚本首先创建一个包含 5000 个数字的列表,然后使用 `sorted()` 函数将它们按降序排序。接着使用切片语法 `[:10]` 取出前 10 个数,存储在 `sorted_numbers` 列表中。最后使用 `index()` 方法找到每个数字在原始列表中的索引,并打印出来。
python脚本,从5000个书中选出10个最大的数,并把10个数的次序号码打印出来
可以使用堆排序算法来解决这个问题。具体步骤如下:
1. 读取5000个数,并将它们放入一个最小堆中。
2. 当堆中元素数量大于10时,将堆顶元素弹出。
3. 当堆中元素数量等于10时,将堆中元素的次序号码打印出来。
4. 重复步骤2和3,直到读取完所有的5000个数。
Python代码如下:
```python
import heapq
# 读取5000个数
numbers = []
with open('numbers.txt') as f:
for line in f:
numbers.append(int(line.strip()))
# 使用最小堆来选出10个最大的数
largest_numbers = []
for i, num in enumerate(numbers):
if i < 10:
heapq.heappush(largest_numbers, (num, i))
else:
if num > largest_numbers[0][0]:
heapq.heappop(largest_numbers)
heapq.heappush(largest_numbers, (num, i))
if i == 4999:
break
# 打印10个最大数的次序号码
for num, index in sorted(largest_numbers, reverse=True):
print(index)
```
其中,假设5000个数保存在一个名为`numbers.txt`的文本文件中,每行一个数。该程序将读取这个文件,并使用最小堆来选出10个最大的数,并打印出它们的次序号码。