Python 有个语法一直没理解

2017-12-09 11:36:07 +08:00
 gdzzzyyy

def char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] map2 = map(char2num, '13579') print(map2) 我知道字符串‘ 13579 ’是可以被迭代的。 问一下 第二行的[s]是什么意思??或者我该百度什么才能理解这句话??

我知道这是字典的内容,我只是对 [ s ] 这么些很疑惑。

6600 次点击
所在节点    Python
36 条回复
Xiaobaixiao
2017-12-09 19:30:45 +08:00
@gdzzzyyy
强烈推荐《 Python 语言及其应用》
那些 XXX 教程真不敢恭维,典型的教你 1+1=2,然后让你解个线性方程,真当每个学习者都拥有爱因斯坦的智商……
那种东西写给自己看的还差不多,有说错话的地方,dalao 不要打我
aaronzjw
2017-12-09 20:19:08 +08:00
搞好排版再来问,不会换行的话,好歹搞个 gist 啊
likuku
2017-12-09 22:15:28 +08:00
有空玩这些胡里花哨的东西,不如多写点东西解决你真实世界里遇到的问题。
SingeeKing
2017-12-09 22:22:26 +08:00
所以为什么不直接用 map(int,'13579')
aristotll
2017-12-10 00:47:50 +08:00
如果你会 clojure 理解就更简单了

字典 也是一个 callable
aristotll
2017-12-10 00:50:19 +08:00
当然 python 不是函数式编程所以 对字典 []语法糖应该是通过 函数 __getitem__实现的
kkzxak47
2017-12-10 01:49:24 +08:00
如果这是书里写的,换一本书
cy18
2017-12-10 09:56:18 +08:00
书推荐 learning python
edwardchor
2017-12-10 12:04:49 +08:00
更安全的语法是{}.get(key[, default]) 否则发现未定义的 key 会报错
gdzzzyyy
2017-12-10 15:02:34 +08:00
@likuku。。。额 我就是在学啊 我看某上万点击的教学 看到了就问一下 也没啥不对吧
gdzzzyyy
2017-12-10 15:03:10 +08:00
@kkzxak47 OK 换教程
lichangqing93
2017-12-10 15:08:35 +08:00
把 map 对于对象和函数的交互搞明白应该就行了
likuku
2017-12-10 19:09:57 +08:00
@gdzzzyyy 于工具型语言来说,用不到就没必要去学了。

当重构时再研究更好的玩法也是不错的选择。

最近也碰巧在重构中遇到类似需求,最终选了 map + lambda 的方式。
pythme
2017-12-10 19:31:10 +08:00
不会换行吗,哇哈哈呃呃呃
bravecarrot
2017-12-10 22:57:39 +08:00
lz 趁机看一波 map filter reduce ( py2 ) 和 lambda 的文档
gdzzzyyy
2017-12-11 01:01:13 +08:00
@likuku 嗯嗯 明白了。谢谢了。确实很多东西是在实践中回去查文档。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/413291

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX