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