python - 从文本文件创建数字列表

标签 python sorting file-io

我正在尝试制作一个程序,对文本文件中的数字列表进行冒泡排序。该文件每行有一个整数。我尝试像这样打开文件:

data = open(file).readlines()

但如果我这样做,换行符 \n 将包含在列表中,并且我的冒泡排序仅按第一个数字对数字进行排序(即 6 在 19 之后)。这是我运行程序时发生的情况的示例。我首先打印出未排序的列表,然后打印排序后的列表。

['13\n', '6\n', '87\n', '19\n', '8\n', '23\n', '8\n', '65']
['13\n', '19\n', '23\n', '6\n', '65', '8\n', '8\n', '87\n']

最佳答案

您需要将 data 的元素转换为整数,因为文件是作为字符串读取的。在进行转换之前,删除 \n 字符可能也是明智之举,您可以使用 str.strip 来完成此操作。 .

使用列表理解:

with open(file, 'r') as f:
    data = [int(line.strip()) for line in f]

我添加了 with上下文管理器。打开文件时使用它通常是一个很好的做法,因为它可以确保文件在之后。另请注意,实际上并不需要 readlines - 迭代文件会默认将每一行提供为字符串。

实际上,甚至不需要 strip,因为 int 似乎会自动去除空格。不过我可能会保留它以防万一。

int(' 13')    # 13
int('13\t')   # 13
int('13 \n')  # 13

关于python - 从文本文件创建数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26131056/

相关文章:

python - 如何为 Python 2.7 安装 PyQT4?

python - 在 pandas 数据框(和)列表上使用 scipy pdist

sorting - Hive 数据记录的顺序是否对连接表很重要

java - 如何获取txt文件中的代码输出?

python - ElementClickInterceptedException : Message: element click intercepted: Element <label> is not clickable with Selenium and Python

python - GoogleAppEngine 上的 Django : performance howto

ruby - 按字符串中的数字对 Ruby 字符串数组进行排序

javascript - 功能性 HTML 表格(排序、过滤、移动和切换列)

c - 执行结束时修改文件内容

asp.net-mvc - 在 AppHarbor 上获取文件内容