如何在每行数字中找到最小的数字?不使用 min()

Posted

技术标签:

【中文标题】如何在每行数字中找到最小的数字?不使用 min()【英文标题】:How to find the smallest number in each line of numbers? Without using min() 【发布时间】:2016-02-14 10:38:36 【问题描述】:

所以我需要为这个文件中包含这些数字的每一行找到最小的数字:

6,3,5
4,4,8
3,7,2
1,8,9
9,0,6

如何在不使用内置 min() 或导入任何内容的情况下对每一行进行排序以找到最小的数字?这是我目前所拥有的:

for line in input_file:
    lines = line.split(' ')
    lines = line.replace('\n',"").replace(',',"")

    for i in range(len(lines)):
        total = int(lines[i])

        print total
        if total > maximum:
            maximum = total
            print 'hey', maximum
print 'HI', maximum

【问题讨论】:

如果你不能使用 min 你可以:a/ 自己实现一个 min 函数或 b/ 排序并取第一项 首先,我会将line.split(' ') 更改为line.split(',').... 我在替换功能中有那个 【参考方案1】:

我不使用python,但这是一般的方法:

for line in input_file:
    numbers = line.replace('\n',"").split(',')

    min = int(numbers[0])
    for num in numbers:
        n = int(num)
        if n < min:
            min = n
    print min

这将打印每一行的最小值

【讨论】:

只是说for num in numbers 而不是使用range(len()) 公式并索引它们有点Pythonic(和可读)。如果您不需要索引,最好直接迭代对象。【参考方案2】:

Python 函数

Python 内置了一个min() 函数:

min([7,5,3,4])

=> 3

排序

不建议这样做,但您可以对列表进行排序,然后选择第一个数字。如果您出于某种原因需要此功能,则计算量更大,但不使用 min() 函数。但实际上,你应该使用它的唯一原因是如果你得到了一个课程或其他东西的作业。

list = [7,5,3,4]
list.sort()
list[0] #=> 3

你自己

如果您需要自己实现此功能,则应使用以下方法:

for line in input_file:
    numbers = [int(i) for i in line.replace('\n',"").split(',')]
    min = numbers[0]
    for num in numbers:
        if num < min:
            min = num
    print min

【讨论】:

呃,这里的列表理解不是很可读。离开numbers = line.replace('\n', '').split(',') 并迭代for num in map(int, numbers): 会更干净。或者(风格上不太可取的 IMO,但 w/e)numbers = map(int, line.replace('\n', '').split(','). @HEY,如果答案对您有用,请单击该复选标记(Lashane 以一种不同的方式进行操作,如果您更喜欢那个)。这有助于其他偶然发现这个问题的人知道哪个是最好的。 @Two-Bit Alchemist:我坚信使用尽可能少的行 - 不知道为什么:D @penne12 至少在 Python 3 上,for num in map(int, numbers) 比您的代码更高效,并且与 lines 的数量完全相同。您正在对每行的两次迭代进行硬编码。可能不是大笔交易(每行真的有多少数字?)但在技术上仍然使工作加倍。 @Two-BitAlchemist 这很有道理。

以上是关于如何在每行数字中找到最小的数字?不使用 min()的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中选择一行中最小的数字?

如何在python中找到输入数字的平均值、最小值、最大值和范围?

在数组的数组中找到最小的数

找到给定范围内数字的最大最小差

查找列表中最小数字的索引值? [复制]

随机不打印正确的最大值和最小值