【问题标题】:Python3: read from a file and sort the valuesPython3:从文件中读取并对值进行排序
【发布时间】:2015-12-27 13:24:03
【问题描述】:

我有一个 txt 文件,其中包含以下方式的数据:

13
56
9
32
99
74
2

不同文件中的每个值。我创建了三个函数:

第一个是交换值

def swap(lst,x,y):
    temp = lst[x]
    lst[x] = lst[y]
    lst[y] = temp

第二个功能是对值进行排序:

def selection_sort(lst):
    for x in range(0,len(lst)-1):
        print(lst)
        swap(lst,x,findMinFrom(lst[x:])+ x)

第三个功能是从列表中找出最小值:

def findMinFrom(lst):
    minIndex = -1
    for m in range(0,len(lst)):
        if minIndex == -1:
            minIndex = m
        elif lst[m] < lst[minIndex]:
            minIndex = m
    return minIndex

现在,我如何从包含数字的文件中读取并打印它们?

提前致谢!


我用过:

def main():
    f = []
    filename = input("Enter the file name: ")
    for line in open(filename):
        for eachElement in line:
            f += eachElement
    print(f)
    selectionSort(f)
    print(f)
main()

但仍然无法正常工作!有什么帮助吗?

【问题讨论】:

  • 请在此处阅读并应用帮助->游览。它声明“没有闲聊”,尽管您的帖子包含“提前致谢”
  • 你的交换函数有一个多余的temp变量,它的主体可以写在一行中; lst[x], lst[y] = lst[y], lst[x],为什么要搞得这么复杂?
  • Anthon,我知道这一行,但不推荐,因为它只存在于 python 中,所以这对我作为程序员来说实际上是一种不好的做法。
  • 这些错误信息是从哪里来的?在创建 Python 之前,我在 Occam2 中使用了并行赋值。 wikipedia 列出了 10 种可以做到这一点的编程语言,但并不详尽。

标签: python file sorting python-3.x


【解决方案1】:

优秀的程序员不会重新发明轮子并使用大多数现代语言的标准排序例程。你可以这样做:

with open('input.txt') as fp:
    for line in sorted(fp):
        print(line, end='')

打印按字母顺序排序的行(作为字符串)。还有

with open('input.txt') as fp:
    for val in sorted(map(int, fp)):
        print(val)

按数字排序。

【讨论】:

  • 莫妮卡,我不能使用任何内置的 python 排序函数来完成这个任务。这个想法是创建一个函数来做到这一点,我做了一个。现在如何使用排序功能对文件中的数字进行排序?
  • @r4b:有两个独立任务:从文件中读取数字,对数字进行排序。一次解决一个问题(分而治之)。如果您想知道如何从文件中读取数字;暂时忘记排序并学习如何阅读数字。您的 selection_sort() 看起来没有任何分类;要修复它,请忘记从文件中读取数字,而是学习如何对整数列表进行排序。一旦你完成了独立的任务;你可以将它们结合起来(有时它可以简化事情或让代码更高效,但你现在可以忽略它)
  • 我的 selection_sort() 进行排序,我自己测试它!
【解决方案2】:

读取文件中的所有行:

f = open('test.txt')
your_listname = list(f)

排序和打印

selection_sort(output_listname)
print(output_listname)

您可能需要在排序/打印之前去除换行符

stripped_listname=[]
for i in your_listname:
    i = i.strip('\n')
    stripped_listname.append(i)

您可能还希望将 print 语句从排序函数中取出,以便在排序时不会多次打印列表。

【讨论】:

  • Knells,我应该在主函数中这样做吗?我还使用了输入功能,以便用户选择他们想要的文件,所以:f = input("文件名:")
  • 我只需要做一次,主要功能就完美了。不要将它放在您发布的任何功能中。 f = open(input("文件名:")) 将从具有输入文件名的文件中获取数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多