Python可以说是十年来新兴的编程语言,并且被证明是一种非常强大的语言。 从交互式地图到区块链,我已经使用Python构建了许多应用程序。 Python有许多功能,对于初学者来说,一开始很难掌握所有功能。

即使您是从其他语言(例如C或MATLAB)切换来的程序员,使用Python进行更高级别抽象的编码绝对是另一种体验。 我希望我早先了解一些Python功能,并重点介绍了五个最重要的功能。

1.列推导表达式-紧凑代码

很多人会把lambda,map和filter称为Python的"技巧",这是每个初学者都应该学习的。 尽管我认为它们是我们应该意识到的功能,但由于它们缺乏灵活性,因此在大多数情况下它们并不是特别有用。

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

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

Photo by Anastase Maragos on Unsplash

列推导表达式是一种简洁而灵活的方法,可以从其他具有灵活表达式和条件的列表中创建列表。 它由方括号构造,带有表达式或函数,仅当元素满足特定条件时,该表达式或函数才应用于列表中的每个元素。 它也可以嵌套以处理嵌套列表,并且比使用地图和过滤器灵活得多。

# 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允许负索引,其中aList [-1] == aList [len(aList)-1]。 因此,我们可以通过调用aList [-2]来获得列表中的倒数第二个元素。

我们还可以使用aList [start:end:step]语法对列表进行切片,其中包括开始元素,但没有结束元素。 因此,调用aList [2:5]会得到[2,3,4]。 我们也可以简单地通过调用aList [::-1]来反转列表,我发现这种技术非常优雅。

Photo by Martin Shreder on 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 = aList
print(f'a = {a}, b = {b}, c = {c}, d = {d}')
# a = 0, b = [1, 2, 3, 4, 5, 6, 7], c = 8, d = 9

3.zipping和枚举-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 engList
a, b, c = zip(*Eng)print(a)
print(b)
print(c)
# ('one', 'two', 'zero')
# ('uno', 'dos', 'cero')
# (1, 2, 0)

Photo by Erol Ahmed on Unsplash

枚举起初可能看起来有些吓人,但在许多情况下变得非常方便。 这是一个自动计数器,通常在for循环中使用,因此不再需要通过counter = 0和counter + = 1在for循环中创建和初始化计数器变量。枚举和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.生成器-内存效率

当我们打算计算大量结果但希望避免同时分配所有结果所需的内存时,将使用生成器。 换句话说,它们会即时生成值,并且不会将先前的值存储在内存中,因此我们只能对其进行一次迭代。如果大家对Python感兴趣的话,可以加一下我们的学习交流抠抠群哦:649,825,285,免费领取一套学习资料和视频课程哟~

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

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

5.虚拟环境-隔离

如果您只记得本文中的一件事,那么应该是使用虚拟环境。

Photo by Matthew Kwong on Unsplash

Python应用程序经常使用来自具有复杂依赖关系的各种开发人员的许多不同软件包。 使用特定的库设置开发了不同的应用程序,在该应用程序中,无法使用其他库版本来复制结果。 没有一个可以满足所有应用程序要求的安装环境。

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

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

我希望我一开始就知道的5个Python功能相关推荐

  1. 资深程序员才知道的30个Python技巧

    Python中的省略号 Python省略号是三点序列,通常在自然语言中使用.但是您可能不知道的是,这也是Python中的有效对象: - Ellipsis 它主要用于NumPy中的矩阵切片操作.但是,您 ...

  2. php要懂函数吗,九个你需要知道的PHP函数和功能

    9个你需要知道的PHP函数和功能 即使使用 PHP 多年,有些功能和特点我们也未必发现或未被充分利用,一旦被我们发现,就会发现它们非常有用.然而,并不是所有的人都已经从头至尾详读过 PHP 的手册和功 ...

  3. ftpclient怎么获取到该目录下面得文件_你应该知道的10种Python文件系统方法

    使用os和shutil操作文件和文件夹 你可以编写Python程序来与文件系统进行交互来做很酷的事情.怎么做并不总是非常清楚.本文是当前和有抱负的开发人员和数据科学家的指南.我们将重点介绍10个基本的 ...

  4. python内置函数多少个_每个数据科学家都应该知道的10个Python内置函数

    python内置函数多少个 Python is the number one choice of programming language for many data scientists and a ...

  5. t–sql pl–sql_SQL日期时间–您应该知道的15个重要功能!

    t–sql pl–sql Hey, folks! Hope you all are doing well. Today, in this article, we will be highlightin ...

  6. 2022 年你必须知道的 10 个 Python 库

    前 10 个 Python 库: Python 是服务于各种用途的库的海洋,作为 Python 开发人员,您必须对最好的库有充分的了解.为了在这方面为您提供帮助,这里有一篇文章为您介绍了用于机器学习的 ...

  7. ​你需要知道的5个Python技巧

    全文共 2626 字,预计学习时长 8 分钟 来源:Pexels Python 有如此出色的支持网络,似乎一次可以解决很多问题. 人们应该认识到这是正常现象. 但初学者可能会对此感到困惑. 人们可以找 ...

  8. python文件系统_你应该知道的10个Python文件系统方法

    4.os.chdir("/absolute/or/relative/path") 等价于macOS/Linux系统的cd命令 此方法将当前工作目录更改为提供的绝对路径或相对路径.如 ...

  9. 技巧:你未必知道的IE8九大功能

    微软为IE8赋予了不少新的功能,其中一个就是使得这些新功能的实现更加实用和简便.其中有很多优化功能,可能你没有完全留意到.不过,你完全不用去阅读那些详细的功能使用说明,我们在为你提供这些功能介绍的同时 ...

最新文章

  1. MySQL--从库启动复制报错1236
  2. 大数据分析神兽麒麟(Apache Kylin)
  3. Docker 私有仓库 Harbor registry 安全认证搭建 [Https]
  4. [云炬创业基础笔记]第七章创业资源测试3
  5. 字符串处理分割字符串
  6. Nginx 通过 Lua + Redis 实现动态封禁 IP
  7. 寒冬悟道者马云:阿里巴巴逢单出击(4)
  8. mysql表中插中文报错_向mysql表中插入含有中文的数据时报错:[Err] 1366
  9. express添加权限拦截
  10. php 数组 组成新数组,PHP让数组中相同值的组组成新的数组详解
  11. 学生信息管理系统c语言课设,学生信息管理系统C语言课设.doc
  12. ef设置非自增长id_今日学习必备:分布式系统全局唯一ID你懂吗?
  13. iOS线程生命周期的监控
  14. 某绒面试的病毒分析(一)
  15. FusionCharts破解方法
  16. android studio mac svn插件,Mac下Android Studio升级SVN1.8(使用1.8format来checkout项目)
  17. shared pool 和buffer pool 详解(之二, Cache Buffers LRU Chain、Cache Buffers LRU Chain闩锁竞争与解决)
  18. c语言中 241错误式什么意思,Qt error: stray '\241' in program
  19. 用Python爬取网页数据,手把手教会你!
  20. win10便签常驻桌面_Win10上自带超好用的便利贴

热门文章

  1. 想离职,是现在就提?还是等到年后?
  2. 互联网晚报 | 12月14日 星期二 | “植发第一股”雍禾医疗登陆港交所;商汤科技将延迟上市;“拍照搜题”等作业APP暂时下线...
  3. python另一个程序正在使用此文件_另一个程序正在使用此文件,进程无法访问
  4. 2015年《大数据》高被引论文Top10文章No.2——大数据时代的数据挖掘 —— 从应用的角度看大数据挖掘(上)...
  5. 【JSP】JSP与JavaBean的关系
  6. CSDN博客如何调整文字的字体、大小、颜色
  7. Truffle 、Geth、TestRPC 在私有链上搭建智能合约
  8. 拥抱变化——从Atlas到ASP.NET AJAX(4):大大简化的了的Extender扩展器控件
  9. VMware 即使克隆解析
  10. Python的变量名、数据类型和简单运算、条件语句,循环及练习——02