Python重要的5大功能

发布时间:2022-03-22 10:00:53 人气:236 作者:多测师

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

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

  1. 生成器——内存效率

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

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

  def gen(n): # an infinite sequence generator that generates integers >= n

  while True:

  yield n

  n += 1

  G = gen(3) # starts at 3

  print(next(G)) # 3

  print(next(G)) # 4

  print(next(G)) # 5

  print(next(G)) # 6

  2. 虚拟环境——隔离

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

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

  conda create -n venv pippython=3.7 # select python version

  source activate venv

  ...

  source deactivate

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

  3. 列表推导——紧致码

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

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

  add_func = lambda z: z ** 2

  is_odd = lambda z: z%2 == 1

  multiply = lambda x,y: x*y

  aList = list(range(10))

  print(aList)

  4

  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

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

Python重要的5大功能

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

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

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

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

  a, b, c, d = aList[0:4]

  print(f'a = {a}, b = {b}, c = {c}, d = {d}')

  # a = 0, b = 1, c = 2, d = 3

  a, *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

  5. 压缩(Zipping)和列举(enumerate) ——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)

  乍一看,列举(Enumerate) 可能有点吓人,但是后来就会发现,在很多情况下使用列举都很方便。它是一种经常用于for循环的自动计数器,因此无需在counter = 0 和counter += 1的情况下创建并初始化变量计数器。列举(enumerate) 和压缩(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.

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

  以上内容为大家介绍了Python重要的5大功能,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/

返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线