乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 90|回复: 6

[编程交流] 将Mapcar和Lambda与两个

[复制链接]

55

主题

243

帖子

188

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2022-7-6 09:21:35 | 显示全部楼层 |阅读模式
我有一个公式:
 
  1. (setq Formula1 (/ (* 0.046 (expt(* LenPath 78.0)(/ 1.0 2.0))) (expt SlopePath (/ 1.0 5.0))))

 
带有两个变量“LenPath”“SlopePath”
 
我有两个清单。列表中的每个项目代表
 
“LenPath”或“SlopePath”
 
例如,在我的第一个列表中:
  1. ((setq LenList   '(2.1 4.0 6.8 10.0  12.0 16.0))

 
所以每个项目都是“LenPath”
 
  1. (setq SlopeList '(5.5 7.8 9.3 12.0  15.4 17.7))

 
每个项目都是“SlopePath”
 
生成的新列表如下所示:
  1. (setq NewList '(0.418 0.538 0.678 0.781 0.814 0.914))

 
如果只有一个变量,那么使用mapcar和lambda很容易做到这一点
然而,如果有两个列表同时用于一个公式,我会感到困惑
 
有什么想法吗?谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:33:27 | 显示全部楼层
你需要这样的东西吗?
 
  1. (mapcar
  2. (function
  3.    (lambda ( _length _slope )
  4.      (/ (* 0.046 (expt (* _length 78.0) 0.5)) (expt _slope 0.2))
  5.    )
  6. )
  7. LenList
  8. SlopeList
  9. )

 
我绝对建议你看看这个教程
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2022-7-6 09:46:32 | 显示全部楼层
谢谢李
这很有效。是的,我以前看过它,但我无法从中找出如何同时使用两个变量。但这是一个非常有用的教程-很好的工作。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:59:51 | 显示全部楼层
 
感谢SmallFish,我发现很难编写一个教程来满足不同经验层次的开发人员的需求,同时保持教程的简短和有趣。
 
你现在明白我上面用的方法了吗?
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:07:29 | 显示全部楼层
也许这对mapcar+lambda有帮助:
 
列出几个简单的列表
  1. (setq l1 '(2 3 4))
  2. (setq l2 '(2 4 )

 
基本(mapcar)调用:
  1. Add the atoms of the lists together
  2. (setq nl1 (mapcar '+ l1 l2))
  3. '(4 7 12)
  4. Multpily the atoms of the lists
  5. (setq nl2 (mapcar '* l1 l2))
  6. '(4 12 32)

 
生成匿名函数(lambda)
:从两条短边的长度中找出下凸的长度
 
  1. (setq fun (lambda (a b) (sqrt (+ (* a a) (* b b)))))
  2. mapcar the (lambda) function to the lists
  3. (setq nl3 (mapcar 'fun l1 l2))
  4. '(2.82843 5 8.94427)

 
在(mapcar)调用中包括(lambda)函数
:将列表中的原子划分为实数
 
  1.   [b][color=BLACK]([/color][/b]setq nl4 [b][color=FUCHSIA]([/color][/b]mapcar '[b][color=NAVY]([/color][/b]lambda [b][color=MAROON]([/color][/b]a b[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]/ [b][color=GREEN]([/color][/b]float a[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]float b[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] l1 l2[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
  2. '(1.0 0.75 0.5)

 
 
HTH-David
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:18:13 | 显示全部楼层
很好的例子大卫,干得好
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:21:58 | 显示全部楼层
谢谢李
 
我需要简单的事情来符合我的想法
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 03:14 , Processed in 0.486908 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表