没有,不只是嵌套的问题。还有很多标准库的函数你不熟悉而已。很多东西你自己实现自然会多出行数。知道现成的标准库方法以后会自然地直接和值访问一样很直接写成嵌套的形式,这是思路上自然导致的。这就是熟练而已,打个比方你要对一系列数据进行分组,你可以针对某个字段进行判断用栈来分组,或者你可以先排序再判断边界,而熟悉标准库会直接用sort加groupby筛选,代码会简单很多。如果你不知道from itertools import groupby那么肯定要多写几行,运行效率还低。
所以你看,即使是堆砖块的现代高级语言,不认识砖块还不如用C老老实实码数据结构。
如果说是纯粹的判断逻辑你要比别人多写好多行,那是你考虑问题的角度和别人不太一样,值得重新考虑吧。思路对了再考虑Pythonic的问题。
比如单纯的技巧上的字典表达式,列表表达式,可迭代对象的拆分和组合,都是熟能生巧的,这个不用急的,你多看两遍别人的代码就知道了。毕竟Python不是Ruby,代码还是很好看懂的。这里面有很多Python底层的知识,你接触了以后才潜移默化地知道为什么可以这么写,为什么要这么写。
至于你问要不要追求这种简洁。原则上是不用刻意去追求,简化你自己针对问题思考和解决的思路,把思路用代码实现出来就可以了。格式上的简化会随着你的熟练度自然进化的。
如果说你是OJ看到别人的代码觉得差距很大,这是很正常的,写出那些代码的人花在学习和练习这个语言上的时间比你不知道多到哪里去了,人家有自己的技巧不是很自然的吗?你如果刚学画画看大触的画不也是很崇拜吗?
多多练习就好了。
不是练习把代码写简洁的方法,最少应该练习如何正确地用Python,最好你应该学习如何使用编程语言进行编程。学得多了会或主动或被动地去了解接触范式的知识,这是让编程代码简洁的根源,但说到底是考虑问题和解决问题的思路。
我个人其实是不反感多写几个def或者if的,但是会尽量少写class和else。只有在命令行模式下才会尽量用匿名函数。因为IDE会自动空格,命令行要手动空格很难受,强迫症又总是忍不住打四个空格。
总结一下:
不用刻意追求简洁
优先训练自己解决问题的能力
多熟悉Python标准库
再了解Python的一些特点