m0_57748717 2022-05-02 23:13 采纳率: 76.3%
浏览 20
已结题

python创建函数中以函数传入参数问题


def apply_to_list(some_list, f):
    return [f(x) for x in some_list]


ints = [4, 0, 1, 5, 6]
test_apply_to_list = apply_to_list(ints, lambda x: x * 2)
print(test_apply_to_list)

最近看书遇到这个代码片段,传入函数中的f参数和return里面的f(x)我不太理解是什么意思,下面的lambda传入后是不是变成[lambda x:x*2 for in ints]呢?希望能直白点解释一下这个问题,感谢

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-05-02 23:27
    关注

    f是函数名,也就是lambda表达式
    其实lambda表达式遵循的就是数学函数的思想,例子里的表达式等价于数学里的 f(x) = x * 2
    apply_to_list的自定义函数里的return语句是个列表生成式,表示在传入的list里遍历元素赋值给x,然后再把x交给lambda表达式的函数f去计算,也就是乘以2,返回的结果放到一个新的列表里返回。
    所以最终结果是把ints列表里的每个元素乘以2,并返回一个新的列表打印出来。
    [8, 0, 2, 10, 12]

    结果等价于
    [x*2 for x in ints]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月13日
  • 已采纳回答 5月5日
  • 创建了问题 5月2日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备