Замените встроенные функции min в python - PullRequest
0 голосов
/ 24 октября 2010

Я должен написать функцию min_in_list(munbers), которая берет список чисел и возвращает наименьшее.ПРИМЕЧАНИЕ: встроенная функция min НЕ разрешена!

def min_in_list(numbers):
    the_smallest = [n for n in numbers if n < n+1]
    return the_smallest

Что не так?

Ответы [ 3 ]

1 голос
/ 24 октября 2010
def min_of_two(x, y):
    if x >= y: return x
    else: return y

def min_in_list(numbers):
    return reduce(min_of_two, numbers)

Вы должны произвести 1 номер из списка, а не просто другой список.И это работа для функции reduce (конечно, вы можете реализовать ее без reduce, но по аналогии с ней).

0 голосов
/ 26 марта 2011
min = lambda n: return reduce(lambda x,y: (x>y) and return x or return y,n)

Никогда не тестировался, используйте на свой страх и риск.

0 голосов
/ 24 октября 2010

Вот, пожалуйста.Это почти наверняка так просто, как вы могли бы сделать это.Вы даже не должны отдавать мне должное, когда сдаете задание.

import itertools
import functools
import operator

def min(seq, keyfun=operator.gt):
    lt = lambda n: functools.partial(keyfun, n)

    for i in seq:
        lti = lt(i)
        try:
            next(itertools.ifilter(lti, seq))
        except:
            return i
...