正确的抽象,得到简单而优美的代码

STEM版,合并数学,物理,化学,科学,工程,机械。不包括生物、医学相关,和计算机相关内容。

版主: verdeliteTheMatrix

回复
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13259
注册时间: 2022年 7月 26日 00:35

#1 正确的抽象,得到简单而优美的代码

帖子 TheMatrix楼主 »

图片
上次由 TheMatrix 在 2025年 3月 31日 17:37 修改。
原因: 未提供修改原因
heteroclinic(Heteroclinic)
著名点评
著名点评
heteroclinic 的博客
帖子互动: 38
帖子: 3818
注册时间: 2022年 10月 31日 00:35

#2 Re: 正确的抽象,得到简单而优美的代码

帖子 heteroclinic(Heteroclinic) »

抽象应该方便normal form吧(我没学过中文词)。说说真么做到low coupling high cohesion的
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13259
注册时间: 2022年 7月 26日 00:35

#3 Re: 正确的抽象,得到简单而优美的代码

帖子 TheMatrix楼主 »

图片

但是zmo函数不能这么写。这和python的递归有关,我也不知道为什么。

要写成这样:

图片

但是Python递归深度只能100,所以为了递归深度,还是要改成ugly的loop:

图片
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13259
注册时间: 2022年 7月 26日 00:35

#4 Re: 正确的抽象,得到简单而优美的代码

帖子 TheMatrix楼主 »

TheMatrix 写了: 2025年 3月 31日 17:17 图片
其实reduce也是loop,不影响性能。和递归不同。

但是Python中怎么用reduce的方法,实现一个函数一直循环迭代到条件不再满足而自然退出,我没找到不ugly的办法。问了chatgpt和deepseek,都是用Exception来实现的,很ugly。

其他语言中应该是有的,类似iterate的。
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13259
注册时间: 2022年 7月 26日 00:35

#5 Re: 正确的抽象,得到简单而优美的代码

帖子 TheMatrix楼主 »

heteroclinic 写了: 2025年 3月 31日 17:16 抽象应该方便normal form吧(我没学过中文词)。说说真么做到low coupling high cohesion的
不懂。
heteroclinic(Heteroclinic)
著名点评
著名点评
heteroclinic 的博客
帖子互动: 38
帖子: 3818
注册时间: 2022年 10月 31日 00:35

#6 Re: 正确的抽象,得到简单而优美的代码

帖子 heteroclinic(Heteroclinic) »

bnf 不是boyle & corile normal form 么,我没有搜。
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13259
注册时间: 2022年 7月 26日 00:35

#7 Re: 正确的抽象,得到简单而优美的代码

帖子 TheMatrix楼主 »

heteroclinic 写了: 2025年 3月 31日 17:32 bnf 不是boyle & corile normal form 么,我没有搜。
bnf是Backus–Naur form,编译理论的。

你说的是third-normal form,数据库的。
heteroclinic(Heteroclinic)
著名点评
著名点评
heteroclinic 的博客
帖子互动: 38
帖子: 3818
注册时间: 2022年 10月 31日 00:35

#8 Re: 正确的抽象,得到简单而优美的代码

帖子 heteroclinic(Heteroclinic) »

TheMatrix 写了: 2025年 3月 31日 17:40 bnf是Backus–Naur form,编译理论的。

你说的是third-normal form,数据库的。
编译理论那不是应该先写symbol rules.
头像
hci(海螺子)
论坛支柱
论坛支柱
帖子互动: 466
帖子: 9927
注册时间: 2022年 7月 22日 15:29

#9 Re: 正确的抽象,得到简单而优美的代码

帖子 hci(海螺子) »

你好这一口,学个Lisp不香么?搞什么python浪费时间。
TheMatrix 写了: 2025年 3月 31日 17:09 图片
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13259
注册时间: 2022年 7月 26日 00:35

#10 Re: 正确的抽象,得到简单而优美的代码

帖子 TheMatrix楼主 »

hci 写了: 2025年 3月 31日 17:47 你好这一口,学个Lisp不香么?搞什么python浪费时间。
lisp我也会。但是我更喜欢python,list comprehension,我觉得比map更舒服。
Caravel
论坛元老
论坛元老
Caravel 的博客
帖子互动: 563
帖子: 24640
注册时间: 2022年 7月 24日 17:21

#11 Re: 正确的抽象,得到简单而优美的代码

帖子 Caravel »

简单是简单,看起来头疼啊
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13259
注册时间: 2022年 7月 26日 00:35

#12 Re: 正确的抽象,得到简单而优美的代码

帖子 TheMatrix楼主 »

Caravel 写了: 2025年 3月 31日 20:10 简单是简单,看起来头疼啊
嗯。也是。

我是看了很多年了。这才越看越顺眼。其实是挺抽象的。
头像
hci(海螺子)
论坛支柱
论坛支柱
帖子互动: 466
帖子: 9927
注册时间: 2022年 7月 22日 15:29

#13 Re: 正确的抽象,得到简单而优美的代码

帖子 hci(海螺子) »

list comprehension哪个lisp没有呢?谁说要map呢。

python连个lamda都是跛脚的,还玩什么玩。

你不会Clojure吧?Clojure比这些都好。这就是为啥人们在各种各样的平台上都弄了Clojure,舒服。用别的都觉得太惨了。
TheMatrix 写了: 2025年 3月 31日 18:45 lisp我也会。但是我更喜欢python,list comprehension,我觉得比map更舒服。
forecasting
著名点评
著名点评
帖子互动: 297
帖子: 4107
注册时间: 2023年 4月 17日 08:26

#14 Re: 正确的抽象,得到简单而优美的代码

帖子 forecasting »

诸位,我最痛恨PERL,其次Python,不想Python这么流行,整个DNN都成了Python的天下。
heteroclinic(Heteroclinic)
著名点评
著名点评
heteroclinic 的博客
帖子互动: 38
帖子: 3818
注册时间: 2022年 10月 31日 00:35

#15 Re: 正确的抽象,得到简单而优美的代码

帖子 heteroclinic(Heteroclinic) »

我在欧洲的时候第一年讲PROLOG,这个不是应该很格调么?
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 264
帖子: 13259
注册时间: 2022年 7月 26日 00:35

#16 Re: 正确的抽象,得到简单而优美的代码

帖子 TheMatrix楼主 »

hci 写了: 2025年 3月 31日 21:03 list comprehension哪个lisp没有呢?谁说要map呢。

python连个lamda都是跛脚的,还玩什么玩。

你不会Clojure吧?Clojure比这些都好。这就是为啥人们在各种各样的平台上都弄了Clojure,舒服。用别的都觉得太惨了。
我说会lisp就是Clojure。当然我不是很熟。就是自己学了玩一下。

Clojure里有list comprehension吗?

[f(x) for x in list]这种?
头像
hci(海螺子)
论坛支柱
论坛支柱
帖子互动: 466
帖子: 9927
注册时间: 2022年 7月 22日 15:29

#17 Re: 正确的抽象,得到简单而优美的代码

帖子 hci(海螺子) »

Clojure有啊。list comprehension就是`(for [x list] ...)` 呀。

List comprehension还可以嵌套,加条件,有变量啥的,老灵活了。

```
(for [x xs
y ys
:when (= x y)
:let [z (* x x)]
z)
```


TheMatrix 写了: 2025年 4月 1日 17:29 我说会lisp就是Clojure。当然我不是很熟。就是自己学了玩一下。

Clojure里有list comprehension吗?

[f(x) for x in list]这种?
Caravel
论坛元老
论坛元老
Caravel 的博客
帖子互动: 563
帖子: 24640
注册时间: 2022年 7月 24日 17:21

#18 Re: 正确的抽象,得到简单而优美的代码

帖子 Caravel »

hci 写了: 2025年 4月 1日 17:47 Clojure有啊。list comprehension就是`(for [x list] ...)` 呀。

List comprehension还可以嵌套,加条件,有变量啥的,老灵活了。

```
(for [x xs
y ys
:when (= x y)
:let [z (* x x)]
z)
```
你是一直鼓吹closure吧?
头像
hci(海螺子)
论坛支柱
论坛支柱
帖子互动: 466
帖子: 9927
注册时间: 2022年 7月 22日 15:29

#19 Re: 正确的抽象,得到简单而优美的代码

帖子 hci(海螺子) »

对呀。Clojure
Caravel 写了: 2025年 4月 1日 18:44 你是一直鼓吹closure吧?
回复

回到 “STEM”