展开全部

建2113议你去看一本书:《计算机程序5261的构造与解释》。里面4102用的语言是Scheme,一种Lisp的方言。通1653过这本书学习程序的抽象、封装,以及重要的函数式编程思想。等看完这本书以后,你在来写写Python代码,就知道如何让其简洁直观而又不失其可读性了。

同时,要让代码写得简洁,你也得熟悉Python本身,充分挖掘其能力。Python内建的几个高阶函数:map,reduce,filter,enumerate等等,lambda表达式,zip函数,以及标准库里强大的itertools、functools模块,都是函数式编程的利器。此外Python本身提供了许多非常好的语法糖衣,例如装饰器、生成器、*args和**kwargs参数、列表推导等等,也是简化代码的有效手段。还有,Python有着强大的库。多参考官方的文档了解其原理和细节,我相信你也能写出高效简洁的代码的。

其实代码的简洁没有什么捷径,它要求你了解你要解决的问题,所使用的语言和工具,相关的算法或流程。这些都得靠你自己不断地练习和持续改进代码,不断地专研问题和学习知识。加油吧,少年!

楼下让你参考PEP 20,其实不用去查,标准库里的this模块就是它(试试import this):The Zen of Python(Python之禅)。它就是一段话:s='''

The Zen of Python, by Tim Peters

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

'''

让我们来做个小游戏吧:统计上面这段话的单词总数目,以及各个单词的数量(不区分大小写),然后按字典顺序输出每个单词出现的次数。要求,例如it's和you're等要拆分成it is和you are。你会怎么写代码呢?如何保持简洁呢?

下面是我的参考答案,争取比我写的更简洁吧~import re

p = re.compile("(\w+)('s|'re|n't)?")

wc = {}

tail_map = { "'s" : 'is', "'re" : 'are', "n't": 'not'}

for m in re.finditer(p, s):

word = m.group(1).lower() # Get the word in lower case

wc[word] = wc.get(word, 0) + 1 # Increase word count

tail = m.group(2) # Get the word tail

if tail is not None: # If a word tail exists,

tail = tail_map[tail] # map it to its full form

wc[tail] = wc.get(tail, 0)+1 # Increase word count

print ('Total word count: %d'%sum(wc.values())) # Output the total count

max_len = max(map(len, wc.keys())) # Calculate the max length of words for pretty printing

for w in sorted(wc.keys()): # Sort the words

print ('%*s => %d'%(max_len, w, wc[w])) # Output

简单python代码实例_求简洁优美的python代码例子、片段、参考资料相关推荐

  1. java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...

    这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共 ...

  2. python编程基础_月隐学python第2课

    python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...

  3. 查看Python的版本_查看当前安装Python的版本

    一.查看Python的版本_查看当前安装Python的版本 具体方法: 首先按[win+r]组合键打开运行: 然后输入cmd,点击[确定]: 最后执行[python --version]命令即可. 特 ...

  4. python socket编程之双方相互通信简单实例_扣丁学堂Python开发socket实现简单通信功能实例...

    扣丁学堂Python开发socket实现简单通信功能实例 2018-08-21 14:12:38 747浏览 今天扣丁学堂Python培训老师给大家结合实例介绍一下关于socket实现的简单通信功能, ...

  5. python解决数学问题的实例_三十道python实战练习习题

    Python数学计算,编程练习题实例一: 简述:这里有四个数字,分别是:1.2.3.4 提问:能组成多少个互不相同且无重复数字的三位数?各是多少? Python解题思路分析:可填在百位.十位.个位的数 ...

  6. python反向缩进_在Pycharm中对代码进行注释和缩进的方法详解

    在Pycharm中对代码进行注释和缩进的方法详解 一.注释 1. #单行注释 2. """ 多行注释 """ 3. pycharm多行注释快 ...

  7. python log函数_求你别再花大价钱学 Python 之爬虫实战

    引子 Python 基本概念 Python 优势和劣势 优势 Python 的劣势 Python 安装设置 Python 基本语法 程序例子 Python 基本语法 Python 爬虫实现 爬虫相关 ...

  8. dictionary new一个实例_超全的Python 字典(Dictionary)介绍

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: 键一 ...

  9. 简单python脚本实例-超实用的 30 段 Python 案例

    Python是目前最流行的语言之一,它在数据科学.机器学习.web开发.脚本编写.自动化方面被许多人广泛使用. 它的简单和易用性造就了它如此流行的原因. 如果你正在阅读本文,那么你或多或少已经使用过P ...

最新文章

  1. 开启报名 | 清华游凯超:预训练模型这么多,该如何选择?一种提速3000倍的高效方法...
  2. 在pycharm中通过VCS快速提交代码
  3. ArcGIS网络分析之构建网络分析数据集(一)
  4. 画原型前需要思考的一些事(上)
  5. php生成gz文件,如何使用PHP创建.gz文件?
  6. 数据结构队列代码_代码简介:队列数据结构如何工作
  7. fgetc与EOF的错综复杂关系
  8. Linux基础—5.Shell基础编程【有图有真相】
  9. 【python小技巧】 批量将.png格式图片转换为.jpg格式图片
  10. java基础-变量定义
  11. Hive数据仓库实战
  12. networkx pagerank
  13. 求分享~水声通信信号调制识别数据集
  14. 四、注入(2)渗透测试常用工具
  15. bistuacm 2019年第⑦场新生训练赛题解
  16. 一个案例彻底解剖财务分析,财务小白必看
  17. 华为服务器WebBios创建磁盘阵列
  18. android 自定义menu 背景颜色,Android中设置Menu菜单的文字颜色为白色
  19. Jetson Nano入坑笔记(一)
  20. 零基础用一百行代码完成动态的人脸识别(opencv+python)

热门文章

  1. Apache 日志配置,包含过滤配置
  2. 实例1.1:通过HWND获得CWnd指针
  3. 华为p10 鸿蒙,全面上线!华为鸿蒙新消息传来,这是要彻底替换安卓
  4. mysql socket tcp udp_TCP、UDP、HTTP、SOCKET之间的区别
  5. mysql80压缩版安装_裕-安装MySQL80(压缩版)
  6. wsdl接口_DEBUG系列四:第三方接口debug
  7. popstate_详解HTML5之pushstate、popstate操作history,无刷新改变当前url
  8. python自动轨迹绘制_自动轨道图,轨迹,绘制
  9. oracle 模糊查询_MySQL Like模糊查询速度太慢如何解决
  10. 整数分解为若干项之和python_SVD奇异值分解及Python实例