2020-01-13 12:30:00

全文共3536字,预计学习时长11分钟

图源:Unsplash

Python作为近几年超级热门的新兴编程语言,其语言功能十分强大的特点,大家有目共睹,想必不用赘述。

Python功能众多,小芯曾用Python的交互式地图和区块链等功能创建了许许多多的应用程序,令人振奋。

但也正因其功能繁多,初学者一开始是很难掌握所有功能的。

即使你是一名从其他语言(比如C语言或MATLAB语言)转换过来的程序员,用更加抽象的Python编写代码对你来说也绝对是一次不同的体验。

但功能虽多,总有主次之分。

为了方便大家早点了解Python的一些大功能,小芯特别整理出了其中5大最重要的功能。

1. 生成器——内存效率

打算计算大量的结果,但同时又想避免同时分配所有结果所需内存,这时候会使用生成器。换句话说,它们即时生成值,但不会将先前生成的值存储在内存中,因此只需要将其迭代一次。

生成器常用于读取大型文件或使用关键字yield生成无穷序列。在大多数数据科学项目中,笔者发现它颇有用处。

  1. def gen(n): # an infinite sequence generator that generates integers >= n
  2. while True:
  3. yield n
  4. n += 1
  5. G = gen(3) # starts at 3
  6. print(next(G)) # 3
  7. print(next(G)) # 4
  8. print(next(G)) # 5
  9. print(next(G)) # 6
  10. python-generator hosted with ❤ by GitHub

2. 虚拟环境——隔离

若读完本文,只能记住其中一条,那应该是虚拟环境的使用。

图源:Unsplash

Python的应用程序经常使用很多不同的软件包,而这些软件包由具有复杂依赖关系的开发人员开发。不同的应用程序由一种特定的库设置开发出来,其结果无法由其他版本的库复制。没有一种安装程序可以满足所有应用程序的要求。

  1. conda create -n venv pippython=3.7 # select python version
  2. source activate venv
  3. ...
  4. source deactivate

因此,为每个应用程序创建单独的虚拟环境venv至关重要,可以用 pip或conda完成。

3. 列表推导——紧致码

很多人认为lambda、map和filter是每个初学者都应该学习的函数。虽然笔者认为这些函数值得关注,但是由于它们缺乏灵活性,大多时候不是特别有用。

Lambda是将一次性使用的函数生成为一行的方法。若函数被多次调用,性能就会降低。另一方面,map将一种函数应用于列表中的所有元素,而filter则会获取集合中满足用户定义条件的元素子集。

  1. add_func = lambda z: z ** 2
  2. is_odd = lambda z: z%2 == 1
  3. multiply = lambda x,y: x*y
  4. aList = list(range(10))
  5. print(aList)
  6. 4
  7. # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  8. python-lambda hosted with ❤ by GitHub

列表推导是一种简洁灵活的方法,可从其他具有灵活表达式和条件的列表中创建新列表。它由一个带有表达式或函数的方括号构成,只有当元素满足特定条件时,才能应用于列表中的每个元素。它也可以通过嵌套来处理嵌套列表,这比用map和filter要灵活得多。

  1. # Syntax of list comprehension
  2. [ expression(x) for x in aList if optional_condition(x)]
  1. print(list(map(add_func, aList)))
  2. print([x ** 2 for x in aList])
  3. # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  4. # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  5. print(list(filter(is_odd, aList)))
  6. print([x for x in aList if x%2 == 1])
  7. # [1, 3, 5, 7, 9]
  8. # [1, 3, 5, 7, 9]
  9. python-list-comprehension hosted with ❤ by GitHub

4. 列表操作——循环列表

Python允许在aList[-1]== aList[len(aList)-1]中出现负索引。因此,可以通过调用aList[-2]等其他元素来获取列表中的倒数第二个元素。

还可以用aList[start:end:step]语法对列表进行切片,该语法包括起始元素,但不包括终止元素。因此,调用aList[2:5]会得到[2, 3, 4]。也可以通过调用aList[::-1]来反转列表,笔者发现这种技巧非常简洁。

图源:Unsplash

列表也可以解压缩为单独的元素,或者解压缩为元素和子列表,两者混在一起,用星号标出。

  1. a, b, c, d = aList[0:4]
  2. print(f'a = {a}, b = {b}, c = {c}, d = {d}')
  3. # a = 0, b = 1, c = 2, d = 3
  4. a, *b, c, d = aList
  5. print(f'a = {a}, b = {b}, c = {c}, d = {d}')
  6. # a = 0, b = [1, 2, 3, 4, 5, 6, 7], c = 8, d = 9
  7. python-unpacking hosted with ❤ by GitHub

5. 压缩(Zipping)和列举(enumerate) ——for循环

压缩 (Zip)函数创建了一种迭代程序,该程序可聚合来自多个列表的元素。它允许在for循环中并行遍历列表并进行并行分类。用星号即可将其解压缩。

  1. numList = [0, 1, 2]
  2. engList = ['zero', 'one', 'two']
  3. espList = ['cero', 'uno', 'dos']
  4. print(list(zip(numList, engList, espList)))
  5. # [(0, 'zero', 'cero'), (1, 'one', 'uno'), (2, 'two', 'dos')]
  6. for num, eng, esp in zip(numList, engList, espList):
  7. print(f'{num} is {eng} in English and {esp} in Spanish.')
  8. # 0 is zero in English and cero in Spanish.
  9. # 1 is one in English and uno in Spanish.
  10. # 2 is two in English and dos in Spanish.
  11. python-zip-1 hosted with ❤ by GitHub
  1. Eng = list(zip(engList, espList, numList))
  2. Eng.sort() # sort by engList
  3. a, b, c = zip(*Eng)
  4. print(a)
  5. print(b)
  6. print(c)
  7. # ('one', 'two', 'zero')
  8. # ('uno', 'dos', 'cero')
  9. # (1, 2, 0)

乍一看,列举(Enumerate) 可能有点吓人,但是后来就会发现,在很多情况下使用列举都很方便。它是一种经常用于for循环的自动计数器,因此无需在counter = 0 和counter += 1的情况下创建并初始化变量计数器。列举(enumerate) 和压缩(zip)是创建for循环时会用到的两种功能最强大的工具。

  1. upperCase = ['A', 'B', 'C', 'D', 'E', 'F']
  2. lowerCase = ['a', 'b', 'c', 'd', 'e', 'f']
  3. for i, (upper, lower) in enumerate(zip(upperCase, lowerCase), 1):
  4. print(f'{i}: {upper} and {lower}.')
  5. # 1: A and a.
  6. # 2: B and b.
  7. # 3: C and c.
  8. # 4: D and d.
  9. # 5: E and e.
  10. # 6: F and f.
  11. python-enumerate hosted with ❤ by GitHub

图源:Unsplash

当然,除了这5种功能,Python还有许许多多其他好用的功能,欢迎大家给小芯留言自己最感兴趣的功能。根据大家的留言,小芯会在下次Python文章中继续为大家介绍更多大家感兴趣的功能~

Python最重要的5大功能,​要是能早点了解就好了相关推荐

  1. 学python可以做什么职业-Python可以做的5大功能和就职5大高薪职业

    今天贵阳达内为大家分享一篇主要是关于达内学员总结的Python的优点和就业方向,如果你还在学习还没开始找工作,这篇文章绝对会对你有所帮助.在看今天的文章之前,还是要说明一下,由于我python的基础知 ...

  2. 8 - 9 template两大功能 : simple_tag、模板继承

    2019独角兽企业重金招聘Python工程师标准>>> template 两大功能 一些基本语法 比如 if for jquery引入 修改时间格式 模板继承 我们在生产中会发现写的 ...

  3. python具备的功能是_用了Python这么多年,揭秘Python不为人知的7大功能和特点!...

    现在,让我们看看怎么定义一个可以接受任意参数的函数.我们利用元组来实现. 使用Glob()查找文件 很多Python函数都有一个长的描述其功能的名字.但如果你不是在别的地方见过glob()这个函数,你 ...

  4. python有什么功能-Python 3.9有什么新功能?

    字幕组双语原文:Python 3.9有什么新功能? 英语原文:What Are The New Features in Python 3.9? 翻译:雷锋字幕组 Python的新版本即将面世.现在是b ...

  5. python就业方向及工资-【行情分享】python就业方向与薪资大揭秘

    原标题:[行情分享]python就业方向与薪资大揭秘 学python,我们要首先问自己,是为了转行?提升自己?还是什么,有了明确的目标,才会沉下心来学习.我学习python的目标是想要转行,可以跟大家 ...

  6. python有哪些作用-python能用来做什么?Python都有哪些逆天的功能

    原标题:python能用来做什么?Python都有哪些逆天的功能 随着人工智能的火爆,Python语言受到了大家广泛关注.Python是一门脚本语言,因为能将其他各种编程语言写的模块粘接在一起,又被大 ...

  7. 用Python增强Excel的3大集成方法及用途

    没有人能躲过Microsoft Excel --你要不就很爱它,要不就是很讨厌它.也许在大学毕业之前,Excel只是考试周才会见几面的朋友,关系仅限脸熟.但当工作进入企业之后,你会发现假如Excel消 ...

  8. Day2:python爬虫基础学习(大嘘)

    Day2:python爬虫基础学习(大嘘)) 教材&参考: 学习过程 Sublime配置教程 下载&安装 语言(设置中文) 设置字体/配色 配置Python环境 使用python官方编 ...

  9. python语言与蟒蛇_1、python语言是一种“大蟒蛇语言‘’,但是python语言却和蟒蛇没有任何关系_学小易找答案...

    [单选题]最早的显微镜是有谁发明的?( ) [简答题]已知斜度,抄画图形. [简答题]什么是程序设计? [简答题]简述承保年度制满期赔付率涵义 [单选题]筹集股权资本是企业筹集( )的一种重要方式. ...

最新文章

  1. 03.Python基础--控制流语句-顺序结构-判断结构-循环语句
  2. mysql计算订单总金额_mysql统计当天消费总额
  3. QQ音乐限制专辑重复购买 此前已取消人气榜等非作品类排名
  4. Activiti(6.0)任务管理服务TaskaskService
  5. bzoj 1801: [Ahoi2009]chess 中国象棋 bzoj 4806: 炮
  6. C# winfrom 添加Log4Net日志库
  7. 10月24日杨力祥老师谈话有感[转]
  8. 对比起来学习前端三大框架(持续更新)
  9. 电脑记事本增强版notepad++
  10. HCIE Cloud
  11. 小班计算机游戏教案,幼儿园小班游戏教案15篇
  12. 计算机毕业设计ssm基于HTML5的环保公益网站d4sf1系统+程序+源码+lw+远程部署
  13. 开发者必看的免费资源分享网站,让开发更简单!
  14. 一个强迫症的电脑下(软件篇)
  15. 无线打印机与手机连接到服务器,图文详解手机通过无线Wifi连接打印机的方法...
  16. python群发邮件
  17. 鸿蒙系统支持双系统吗,双系统同台登出,EMUI11+鸿蒙系统2.0,有大招
  18. 心知天气html,Typecho 博客添加“心知天气”网页天气插件教程
  19. 从青云上市,看中国云计算小巨头的“屠龙”之路
  20. 为什么易语言程序被360和windows安全中心认作是病毒?

热门文章

  1. python yield用法
  2. 网格搜索后返回的就是最佳的模型
  3. 什么是两阶段提交协议2PC CAP
  4. seq2seq nlp 这篇博文的引用相当好
  5. 程序员能力矩阵 你属于哪一层?
  6. 计算机主机房的消防配置包括,信息安全等级保护之技术要求→物理安全→防火...
  7. java对象序列化克隆_JAVA 对象克隆和序列化
  8. 与《代码大全》齐名的经典著作
  9. pytorch gans
  10. ITK VTK CTK QT 跨平台联合开发之 一