python百万浮点数排序1秒内写入txt文件代码
时间: 2024-09-16 22:01:51 浏览: 43
在Python中,如果你需要对百万级别的浮点数进行排序并快速写入文本文件,可以考虑使用内置的`sorted()`函数结合`with open()`语句来实现,这通常比直接遍历数组更快。以下是一个简单的示例:
```python
import random
import time
# 生成一百万随机浮点数
float_list = [random.random() for _ in range(1000000)]
# 开始计时
start_time = time.time()
# 对列表排序
sorted_list = sorted(float_list)
# 打开文件,使用'w'模式覆盖原有内容
with open('output.txt', 'w') as f:
# 写入排序后的数据,每行一个元素
for num in sorted_list:
f.write(f"{num}\n")
# 计算和打印耗时
end_time = time.time()
execution_time = end_time - start_time
print(f"排序并写入文件完成,耗时: {execution_time:.2f}秒")
相关问题
python读取txt文件,根据第一列数据的大小对txt文件重新排序
好的,可以使用以下代码实现:
```python
with open('file.txt', 'r') as f:
lines = f.readlines()
data = []
for line in lines:
data.append(line.strip().split())
# 根据第一列数据的大小排序
sorted_data = sorted(data, key=lambda x: float(x[0]))
# 将排序后的数据写回文件
with open('sorted_file.txt', 'w') as f:
for line in sorted_data:
f.write('\t'.join(line) + '\n')
```
这段代码首先使用 `with open()` 语句打开文件并读取所有行,然后使用 `split()` 方法将每行数据按照制表符分割成列表,并添加到列表 `data` 中。
接着,使用 `sorted()` 函数对 `data` 列表进行排序,排序的关键字为列表中的第一个元素,即第一列数据,使用 `float()` 函数将字符串转换为浮点数进行比较。
最后,将排序后的数据写回到文件中,使用 `join()` 方法将列表转换为制表符分割的字符串,并在每行末尾添加换行符,写入到新文件 `sorted_file.txt` 中。
1.在文件夹下创建一个文本文件 file1.txt,内容是三行数字: 12 3 456 78 901 23 67 89 10 234 5 45 6 78 901 123 (1)使用 read()读入文件内容,计算出所有数字的和。 (2)使用 readline()分行读入文件内容,对每行内容按升序排序后写入 file2.txt。 (3)使用 readlines()读入文件内容,统计总共行数。 2.在文件夹下创建一个文本文件 file3.txt,内容如下: Time Code Price Volume 14:23:56 000001 15.69 650 14:24:08 000001 15.70 181 14:24:32 000001 15.68 59 使用代码读入文件内容,并且将四列数据分别处理为 time.strftime、字符串、浮点数、整数形式 3. (1)使用 lambda 函数计算三个数 x,y,z 的平均值。 (2)使用可变位置参数定义函数计算若干个数的平均值并在未传递参数时返回 None。
1.关于文件操作的问题:
(1)计算所有数字的和:
```python
with open('file1.txt','r') as f:
content = f.read()
nums = content.split()
sum = 0
for num in nums:
sum += int(num)
print(sum)
```
输出结果为:1741
(2)对每行内容按升序排序后写入 file2.txt:
```python
with open('file1.txt','r') as f:
lines = f.readlines()
sorted_lines = []
for line in lines:
nums = line.split()
sorted_nums = sorted(nums, key=int)
sorted_line = ' '.join(sorted_nums) + '\n'
sorted_lines.append(sorted_line)
with open('file2.txt', 'w') as f2:
f2.writelines(sorted_lines)
```
这里我们使用了 sorted() 函数对每行的数字进行升序排序,然后使用 join() 函数将排好序的数字重新组成字符串,最后再加上换行符 '\n' 写入 file2.txt 中。
(3)统计总共行数:
```python
with open('file1.txt', 'r') as f:
lines = f.readlines()
print(len(lines))
```
输出结果为:3
2.关于文件内容处理的问题:
```python
import datetime
with open('file3.txt', 'r') as f:
lines = f.readlines()
for line in lines:
time_str, code, price_str, vol_str = line.split()
time = datetime.datetime.strptime(time_str, '%H:%M:%S').strftime('%H:%M:%S')
price = float(price_str)
vol = int(vol_str)
print(time, code, price, vol)
```
这里我们使用了 strptime() 函数将时间字符串转换为 datetime 类型,再使用 strftime() 函数将其转换为指定格式的字符串。
3.关于 lambda 函数和可变位置参数的问题:
(1)计算三个数 x,y,z 的平均值:
```python
avg = lambda x,y,z: (x+y+z)/3
print(avg(1,2,3))
```
输出结果为:2.0
(2)计算若干个数的平均值并在未传递参数时返回 None:
```python
def avg(*args):
if len(args) == 0:
return None
else:
sum = 0
for arg in args:
sum += arg
return sum/len(args)
print(avg())
print(avg(1,2,3))
```
输出结果为:
None
2.0
阅读全文