2010-10-24 3 views
-1

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

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

Что случилось?

+0

Что вам не нравится? Это не работает? Получается ли это исключение? Это порождает неправильный ответ? Пожалуйста, предоставьте подробную информацию, если вы попросите нас помочь с вашей домашней работой. Подробности имеют значение. Это показывает, что вы учитесь. –

+3

Что случилось с тем, что у вас есть, что n всегда * меньше, чем n + 1 (как это могло бы быть?), Поэтому вы получите весь список. – kindall

+0

Вы попробовали? Вот как это работает: >>> min_in_list ([1,2,3,4,5]) выходы [1, 2, 3, 4, 5] – Gusto

ответ

1
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

То, что мне нужно! – Gusto

+0

@ Gusto: да, но как вы объясните своему учителю, как вы достигли этого решения? – tzot

+0

@ ΤΖΩΤΖΙΟΥ Мне не нужно ничего объяснять - это подготовка к экзамену, а не «домашняя работа», как она есть. – Gusto

0

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

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 
+0

слишком длинный и слишком сложный – Gusto

0
min = lambda n: return reduce(lambda x,y: (x>y) and return x or return y,n) 

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

Смежные вопросы