LINUX.ORG.RU

История изменений

Исправление Bad_ptr, (текущая версия) :

def set(list):
  def inner_set(acc, list):
    if [] == list or None is list:
       return acc
    head = list[0]
    rest = list[1:]
    if head not in rest:
       acc.append(head)
    return inner_set(acc, rest)
  return inner_set([], list)

Что-то типа такого. А теперь гуру питона, расскажите как это переписать на ленивых генераторах, без рекурсии.

Исправление Bad_ptr, :

def set(list):
  def inner_set(acc, rest):
    if [] == rest or None is rest:
       return acc
    head = rest[0]
    if head not in rest[1:]:
       acc.append(head)
    return inner_set(acc, rest[1:])
  return inner_set([], list)

Что-то типа такого. А теперь гуру питона, расскажите как это переписать на ленивых генераторах, без рекурсии.

Исходная версия Bad_ptr, :

def set(list):
  def inner_set(acc, rest):
    if [] == rest or None == rest:
       return acc
    head = rest[0]
    if head not in rest[1:]:
       acc.append(head)
    return inner_set(acc, rest[1:])
  return inner_set([], list)

Что-то типа такого. А теперь гуру питона, расскажите как это переписать на ленивых генераторах, без рекурсии.