【问题标题】:Map two functions together in Functional Programming paradigm在函数式编程范式中将两个函数映射在一起
【发布时间】:2016-04-27 13:08:17
【问题描述】:

我正在学习 Python 中的函数式编程。我读到函数理想地只做一件事,所以如果我不能一次传递多个函数,我将如何进行大计算

import datetime

birthdays = [
    datetime.datetime(2012, 4, 29),
    datetime.datetime(2006, 8, 9),
    datetime.datetime(1978, 5, 16),
    datetime.datetime(1981, 8, 15),
    datetime.datetime(2001, 7, 4),
    datetime.datetime(1999, 12, 30)
]

today = datetime.datetime.today()

def is_over_13(dt):
  delta = today - dt
  return delta.days >= 4745

def date_string(dt):
  return dt.strftime("%B %d")

def reverse(iterable):
  return iterable[::-1]

birth_dates = list(map(date_string, filter(is_over_13, birthdays)))

代码在date_string 中显示生日,由 13 岁以上的人过滤。我想在现有 map 之上添加 reverse 函数。这可能吗?

【问题讨论】:

    标签: python functional-programming


    【解决方案1】:

    您可以使用内置的reversed() 函数。它返回一个迭代器,所以你可能想用list() 包装它。

     birth_dates = list(reversed(map(date_string, filter(is_over_13, birthdays))))
    

    【讨论】:

      【解决方案2】:

      是的,你可以(我正在使用你的 reverse 函数):

      birth_dates = reverse(list(map(date_string, filter(is_over_13, birthdays))))
      

      或者,您最初可以反转 birthdays

      birth_dates = list(map(date_string, filter(is_over_13, reverse(birthdays))))
      

      您也可以使用reversed 而不是编写自己的函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-18
        • 1970-01-01
        • 2017-01-03
        • 2016-05-13
        • 1970-01-01
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多