无法将排序列表写入新文件。

时间:2016-11-18 23:35:13

标签: python python-3.x

我试图将排序列表写入文件。我有1000个整数,我按升序排序,但无法设法将新的升序列表写入我的新文件'结果'。我是编程新手,非常感谢任何帮助。 到目前为止,这是我的代码:

def insertion_sort():
    f = open("integers.txt", "r")

    lines = f.read().splitlines()
    print(lines)
    print(type(lines[0]))
    results = list(map(int, lines))
    print(type(results[0]))
    results.sort()
    print(results)


f=open("integers.txt", "r")
lines = f.read().splitlines()
results = list(map(int,lines))
insertion_sort()

value = results.sort()

file_to_save_to = open("results.txt", "w")
file_to_save_to.write(str(value))
file_to_save_to.close()

4 个答案:

答案 0 :(得分:0)

你的问题来自这一行

value = results.sort()

列表的排序方法不会返回任何内容,它会修改列表。

相反,您应该使用sorted

value = sorted(results)

或直接列为results的列表,而不存储它的排序方法

results.sort()`

答案 1 :(得分:0)

你正在调用insertion_sort()这是一个执行操作的函数,但还没有返回任何内容。您只想在函数末尾添加return语句来返回results

def insertion_sort():
    f = open("integers.txt", "r")

    lines = f.read().splitlines()
    print(lines)
    print(type(lines[0]))
    results = list(map(int, lines))
    print(type(results[0]))
    results.sort()
    print(results)
    return results  # <- Add this line

然后,通过更改来使用返回的列表:
insertion_sort()value = insertion_sort()

答案 2 :(得分:0)

你应该尝试使用函数排序

value = sorted(results)

你可能不会使用list(map(int,lines)))你可以将map对象传递给sorted,所以代码将是这样的:

results = sorted(map(int,lines))

完整的例子将是这样的:

f=open("integers.txt", "r")
lines = f.read().splitlines()
sorted_lines = sorted(map(int,lines))
file_to_save_to = open("results.txt", "w")
for line in sorted_lines:
     file_to_save_to.write(str(line))
file_to_save_to.close()

答案 3 :(得分:0)

首先,如果您将函数更改为接收参数(整数列表),并返回排序列表而不是None(现在就是这样),那将会很棒。

def insertion_sort(T):
    return sorted(T)


f=open("integers.txt", "r")
lines = f.read().splitlines()
results = list(map(int,lines))
value = insertion_sort(results)

file_to_save_to = open("results.txt", "w")
file_to_save_to.write(str(value))
file_to_save_to.close()