Python中有一个语法一直没理解

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 ] 这么些很疑惑。


Python中有一个语法一直没理解

37 回复

s 是 char2num 的参数,比如 s 是’2’就返回字典的’2’,就是 2,再用 map 施加到每个字符
还有楼主的排版要被喷了


我无法理解你的问题

x = {‘0’: 0, ‘1’: 1, ‘2’: 2, ‘3’: 3, ‘4’: 4, ‘5’: 5, ‘6’: 6, ‘7’: 7, ‘8’: 8, ‘9’: 9}
x[s]

还不理解的话只能百度 pyhon 字典如何取出值,以及函数的参数

排版太烂不看

不会 python;不过 char2num 看起来是个函数,s 应该是个参数;{}是个对象字面量,[s]是取值操作;
猜的 不过应该没错

或者再看看 map 是怎么把对象和函数进行交合的

额 我其实已经排版过了
我发出去就去工作了。。回来刷新一下发现错乱了。。。

你的排版让你错过很多好答案,比如我的

明白了好像。这好奇葩啊 哈哈哈

嗯嗯再去看看 这个语法很好玩

这语法就是正常的字典取值
其实他写成

a = {‘0’: 0, ‘1’: 1, ‘2’: 2, ‘3’: 3, ‘4’: 4, ‘5’: 5, ‘6’: 6, ‘7’: 7, ‘8’: 8, ‘9’: 9}
return a[s]

这样你就能理解了
也不光是 python 其他几家脚本也是如此取值

这种问题 可能不是你没仔细读教材 而是对字面量的 dict 不怎么熟悉造成的

(True, False)[1<0]
这句能读懂不?

谢谢了。看了上面和您的解答自己又看了一下具体语法,明白了。

map(lambda x: int(x), ‘1359’)

map(int,‘13579’)








符号

楼主你需要这样处理下排版

python<br><br>your_code...<br><br>

你可能是某个 XXX 教程的受害者
如果没有其他语言基础,建议你老老实实买本书看。

额 和其他语言没关把 我就是看这个{} [] 这么写没理解。
求推荐一本书把 我刚接触 python 最近在看慕课教程和廖雪峰老师的教程


强烈推荐《 Python 语言及其应用》
那些 XXX 教程真不敢恭维,典型的教你 1+1=2,然后让你解个线性方程,真当每个学习者都拥有爱因斯坦的智商……
那种东西写给自己看的还差不多,有说错话的地方,dalao 不要打我

搞好排版再来问,不会换行的话,好歹搞个 gist 啊

有空玩这些胡里花哨的东西,不如多写点东西解决你真实世界里遇到的问题。

所以为什么不直接用 map(int,‘13579’)

如果你会 clojure 理解就更简单了

字典 也是一个 callable

当然 python 不是函数式编程所以 对字典 []语法糖应该是通过 函数 __getitem__实现的

如果这是书里写的,换一本书

书推荐 learning python

更安全的语法是{}.get(key[, default]) 否则发现未定义的 key 会报错

。。。额 我就是在学啊 我看某上万点击的教学 看到了就问一下 也没啥不对吧

OK 换教程

把 map 对于对象和函数的交互搞明白应该就行了

于工具型语言来说,用不到就没必要去学了。

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

最近也碰巧在重构中遇到类似需求,最终选了 map + lambda 的方式。

不会换行吗,哇哈哈呃呃呃

lz 趁机看一波 map filter reduce ( py2 ) 和 lambda 的文档

嗯嗯 明白了。谢谢了。确实很多东西是在实践中回去查文档。

回到顶部