Kirill Sharkovski 发布在 Unsplash 杂志上的照片

AI开发者按,Python 是近十年来兴起的编程语言,并且被证明是一种非常强大的语言。我用 Python 构建了很多应用程序,从交互式地图到区块链。Python 有很多特性,初学者很难一开始就掌握所有的特性。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

即使你是一个从其他语言(如 C 或 MATLAB)转换过来的程序员,用更高抽象级别的 Python 编写代码绝对是另一种体验。回顾起来,有很多 Python 特性如果我能早点知道,肯定能少走不少弯路。现在我想要重点介绍其中五个最重要的特性。

1.理解 List——压缩代码

很多人会将 lambda、map 和 filter 作为 Python 的「技巧」,每个初学者都应该学习这些技巧。虽然我相信它们是我们应该掌握的特性,但我发现由于缺乏灵活性,它们在大多数时候并不特别有用。

Lambda 是一种在一行中组合函数以供一次性使用的方法。如果函数被多次调用,性能将受到影响。另一方面,map 将函数应用于列表中的所有元素,而 filter 将获取满足用户定义条件的集合中元素的子集。

add_func = lambda z: z ** 2is_odd = lambda z: z%2 == 1multiply = lambda x,y: x*yaList = list(range(10))print(aList)# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Anastase Maragos 发表在 Unsplash 杂志上的照片

列表理解是一种简洁而灵活的方法,可以使用灵活的表达式和条件从其他列表创建列表。它是由方括号构造的,它有一个表达式或一个函数,只有当元素满足某个条件时,该表达式或函数才应用于列表中的每个元素。它还可以嵌套来处理嵌套列表,并且比使用 map 和 filter 灵活得多。

# Syntax of list comprehension
[ expression(x) for x in aList if optional_condition(x) ]
print(list(map(add_func, aList)))print([x ** 2 for x in aList])# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]print(list(filter(is_odd, aList)))print([x for x in aList if x%2 == 1])# [1, 3, 5, 7, 9]# [1, 3, 5, 7, 9]

2.列表循环

Python 允许使用负索引,其中 Altruts [-1]== Altrue[LeN(Listor)-1 ]。因此,我们可以通过调用 a list[-2] 等获得列表中的倒数第二个元素。

我们还可以使用语法 aList[start:end:step] 对列表进行切片,其中包含起始元素,但不包含结束元素。因此,aList[2:5] 的结果是 [2,3,4]。我们也可以通过调用 a list[::-1] 来反转列表,我发现这种技术非常优雅。

Martin Shreder 发表在 Unsplash 杂志上的照片

列表也可以分解成单独的元素,或者使用星号将元素和子列表混合。

a, b, c, d = aList[0:4]print(f'a = {a}, b = {b}, c = {c}, d = {d}')# a = 0, b = 1, c = 2, d = 3a, *b, c, d = aListprint(f'a = {a}, b = {b}, c = {c}, d = {d}')# a = 0, b = [1, 2, 3, 4, 5, 6, 7], c = 8, d = 9

3.压缩和枚举:for 循环

Zip 函数创建一个迭代器,该迭代器聚合来自多个列表的元素。它允许在 for 循环中并行遍历列表并并行排序。它可以用星号来解压缩。

numList = [0, 1, 2]engList = ['zero', 'one', 'two']espList = ['cero', 'uno', 'dos']print(list(zip(numList, engList, espList)))# [(0, 'zero', 'cero'), (1, 'one', 'uno'), (2, 'two', 'dos')]for num, eng, esp in zip(numList, engList, espList):print(f'{num} is {eng} in English and {esp} in Spanish.')# 0 is zero in English and cero in Spanish.# 1 is one in English and uno in Spanish.# 2 is two in English and dos in Spanish.
Eng = list(zip(engList, espList, numList))Eng.sort() # sort by engLista, b, c = zip(*Eng)print(a)print(b)print(c)# ('one', 'two', 'zero')# ('uno', 'dos', 'cero')# (1, 2, 0)

Erol Ahmed 发表在 Unsplash 杂志上的照片

枚举一开始可能看起来有点吓人,但在许多情况下它是非常方便的。它是一个经常在 for 循环中使用的自动计数器,不需要在 for 循环中创建和初始化计数器变量 by counter=0 和 counter+=1。枚举和 zip 是构造 for 循环时最强大的两个工具。

upperCase = ['A', 'B', 'C', 'D', 'E', 'F']lowerCase = ['a', 'b', 'c', 'd', 'e', 'f']for i, (upper, lower) in enumerate(zip(upperCase, lowerCase), 1):print(f'{i}: {upper} and {lower}.')# 1: A and a.# 2: B and b.# 3: C and c.# 4: D and d.# 5: E and e.# 6: F and f.

4.生成器:内存效率

当我们打算对大量数据进行计算,但希望避免同时分配所有结果所需的内存时,会使用生成器。换句话说,它们会动态生成值,而不会将以前的值存储在内存中,因此我们只能对它们进行一次迭代。

它们通常用于读取大文件或使用关键字 yield 生成无限序列。我经常发现它在我的大多数数据科学项目中很有用。

def gen(n):    # an infinite sequence generator that generates integers >= nwhile True:yield nn += 1G = gen(3)     # starts at 3print(next(G)) # 3print(next(G)) # 4print(next(G)) # 5print(next(G)) # 6

5.虚拟环境:isolation

如果你读完本文中只记得其中一条,那么应该是虚拟环境的使用。

Matthew Kwong 发布在 Unsplash 上的照片

Python 应用程序通常使用很多不同的包,这些包来不同的开发人员,具有复杂的依赖关系。不同的应用程序是使用特定的库设置开发的,其中的结果不能使用其他库版本复制。不存在一次安装就满足所有应用要求的情况。

conda create -n venv pip python=3.7  # select python version
source activate venv
...
source deactivate

因此,为每个应用程序创建独立的独立虚拟环境 venv 是非常重要的,这可以使用 pip 或 conda 来完成。

5个Python特性 越早知道越好的相关推荐

  1. python版本越高越好吗-5个Python特性 越早知道越好的

    Python Python开发 Python语言 5个Python特性 越早知道越好的 Kirill Sharkovski 发布在 Unsplash 杂志上的照片 AI开发者按,Python 是近十年 ...

  2. 奉劝那些刚参加工作的学弟学妹们:这20个高质量的学习网站越早知道越好(建议收藏)!!

    这些学习网站越早知道越好,建议收藏,悄悄努力,然后惊艳所有人!! 大家好,我是冰河~~ 今年的五一假期总共五天,比往年假期略微长点.其实,抓住这个假期,好好巩固下自己欠缺的某个知识点,提升下自己的技能 ...

  3. 奉劝那些刚参加工作的学弟学妹们:这些计算机与操作系统基础知识越早知道越好!万字长文太顶了!!(建议收藏)

    大家好,我是冰河~~ 最近发现很多小伙伴工作很久了,大部分工作都是在重复的进行CRUD,对于一些基础性的知识,比如:计算机基础知识,操作系统,数据结构和算法等,却了解的少之又少.其实,很多时候,这些基 ...

  4. 「杂谈」那些越早知道越好的人生经验

    笔者结合自己的人生经历,以及发生在笔者周边的朋友身上的事情,谈谈那些越早知道越好的人生经验,希望能帮到年轻人! 1,上大学之前不要恋爱.大学之前,个人心理上不够成熟,在中学阶段谈恋爱,会让自己陷入迷茫 ...

  5. 有些事情女孩子越早知道越容易幸福

    有些事情女孩子越早知道越容易幸福 1.如果你的父母并非嫌贫爱富,而以人品为由强力阻止你和某人谈恋爱,千万不要为了要证明他们是错的,就拚尽全力爱起他来,你会发现你吃的苦头远比想像中多,而稍能收成时,岁月 ...

  6. 上半年银行罚单不断,7月越早贷款越有利

    刚过去的6月份,估计大家都感觉到了资金紧张的氛围,幸好央行连续投放了一些流动性,让6月这个关键的节点能够平稳渡过. 但是大家不要高兴得太早,虽然6月平稳渡过了,但是接下来的7月才是真正考验大家的时候, ...

  7. 关于管理,这5大误区你越早知道越好

    关于管理,这5大误区你越早知道越好 原创: 陈春花 管理的常识 绝大部分人都感觉自己已经非常努力地工作,但结果却不尽如人意,到底问题出在哪里? 就让北京大学国家发展研究院管理学教授.北大国发院BiMB ...

  8. 男人三十而立,被动收入,越早开始越好

    被动收入,越早开始越好 那些曾经困扰过你的问题和焦虑,如果你不正面冲撞它,击破它,它们就会在你30岁.35岁.40岁.45岁的时候,卷土重来.并且一次比一次凶狠,而你却一次比一次无力.那些曾经困扰过你 ...

  9. 你的华为手机还会卡?那是这3个功能没设置吧,越早关掉越好

    华为在国产手机行业已经是领军人物了,消费者口中华为手机口碑也是非常不错的,不仅是华为硬实力强大,还有软实力EMUI系统也非常好用. 华为手机的流畅度都能媲美IOS系统了,但你的华为手机为什么会卡你呢? ...

  10. 客户关系管理软件crm是越早使用越好的软件

    各位老板即使引入了CRM,在前期工作过程当中依旧会出现很多问题,下面我们就来说一下怎么快速的上手使用CRM. 一.让员工参与进来 这是成功引入CRM的关键.这听起来很直截了当,但是员工不想参与CRM, ...

最新文章

  1. 免安装的mysql删除_MySQL5.7 免安装版配置及删除图文教程
  2. 独家 | 手把手教你用R语言做回归后的残差分析(附代码)
  3. matlab降幂排序,Matlab教程(三)
  4. 网页布局(固定与不固定原理)
  5. 13c语言中的文件是一种流式文件,读写时均以字符为单位.,C语言判断题部分.doc...
  6. 【C语言】创建一个函数,并调用比较三个数的大小
  7. js long类型精度丢失_解决js处理Long类型丢失精度的问题
  8. 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”解决方法
  9. CV学习笔记-推理和训练
  10. DevExpress控件手册
  11. 收盘涨幅大于1.5%小于5%的选股公式
  12. deel t410安装_用DEEL-LIP构建Lipschitz约束网络
  13. 算法每日一题——第六天——干草堆(差分)
  14. 运维工程师使用的运维平台和工具表
  15. 建模大佬都不会外传的角色手办制作流程
  16. 新媒体短视频运营哪些内容
  17. zj-layout组件的布局
  18. 『政善治』Postman工具 — 18、NewMan的使用
  19. Kotlin学习(二)-------绝对震撼你的kotlin数据类-data class
  20. 容器里源码安装apache

热门文章

  1. python-循环的入门
  2. usermod使用方法
  3. MySQL中查看某数据库大小及表大小
  4. Facebook黄毅博士:像加工艺术品一样构建技术产品
  5. CMD(命令提示符)-------javac编译程序出现“”编码GBK的不可映射字符“”
  6. 29岁年薪百万,晋升阿里最年轻P8之一,我想分享8点成长经验
  7. 下拉加载更多--判断页面距离
  8. 用msvdm.dll文件实现微软的虚拟桌面
  9. Struts1中execute实现过滤控制
  10. info nano shutdown