Python是数据科学领域最受欢迎的语言之一。它是一种很容易上手的语言,并且有大量的库支持。编写和理解Python更容易。它是一种面向对象的语言,也可以用来编写函数代码。从预测模型到UI,几乎所有类型的应用程序都可以使用Python实现。这是Python被用于几乎所有生产级项目的主要原因。

在数据科学中使用的一些最强大和最常见的库是NumPy和Pandas。这些库利用了python的现有功能,使其成为数据分析的明显选择。

下面是Python编程语言的一些最高级的特性!

Lambda函数

Lambda函数是本质上匿名的函数。 它没有函数名称。

与Python中的常规函数定义不同,这些函数使用关键字“lambda”定义。 这些函数的全部目的不是专门为函数创建内存,而是匿名使用它来执行带有几个参数的简单操作。 这些函数可以有任意数量的参数,但只能有一个表达式,因为lambda函数的概念在语法上仅限于一个表达式。

lambda函数的一个简单示例如下:

i = lambda a, b : a * b
print(i(7, 8)) # prints '56'

i = lambda a : a*5 + 5
print(i(5)) # prints '30'

看上面的例子,多么简单!我们执行了一些简单的数学运算,而无需定义整个函数。这是 Python 的众多特征之一,这些特征使它成为一种干净、简单的编程语言。

迭代器Itertools

python中的Itertools模块是一组用于处理迭代器的工具。迭代器是在循环时使用的数据类型,以便有效地访问和操作数据结构。Itertools还可以帮助编写高效、美观的代码。

注意:

为了访问这个模块中可用的方法,必须导入Itertools。

例子:

# Linux迷 www.linuxmi.com

import itertools
import operator
x = [1, 2, 3, 4, 5]
sol = itertools.accumulate(x,operator.mul)
for i in sol:
    print(i)

输出如下:

Itertools有大量使用方法。 一些值得注意的是:

count(start,[step]):

计数过程从起始值开始,以指定步长递增(默认为1)。

cycle(p):

cycle就是一while True,无限循环里面的数字。迭代分析字符串的元素,并提供包含字符串中各个元素的结果。

repeat(elem,[n]):

重复迭代elem,n次

Maps

Map()用于对列表或字典等数据结构中的元素序列执行相同的函数。Maps可以用来避免循环,从而对每个元素进行相同的更改,使其更具可读性。

Python中的map函数应用于每一个可迭代的项,返回的是一个结果迭代器。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为map对象返回。

以下是 map() 方法的语法:

map(function, iterable, …)

def square(x) :            # 计算平方数
    return x ** 2
linuxmi=list(map(square, [1,2,3,4,5]))   # 计算列表各个元素的平方
print(linuxmi)

map() 函数会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

组包/解包 (Packing / Unpacking)

在将变量分配给列表或元组的过程中,使用*运算符来转换将元素分配给变量的方式。 它是Python提供的最方便的技术之一。 诸如此类的技术证明了Python在数据科学和机器学习中是首选的原因。

代码:

# Linux迷 www.linuxmi.com

a, *b, c = [1, 2, 3, 4, 5, 6, 7]
print(a)
print(b)
print(c)

输出如下:

生成器(Generators)

生成器(generator)是用于创建元素序列的对象。 它更像是一个迭代器,因此与for语句并驾齐驱。 使用使用yield关键字生成值的函数创建生成器。

列表推导式(list comprehension)与生成器(generator)之间的区别在于,前者生成整个列表,而生成器表达式一次生成一个元素。 由于这个原因,生成器表达式比等效的列表理解具有更高的内存效率。 还使用了生成器,因为生成器只需较少的代码行。

示例代码:

# Linux迷 www.linuxmi.com

generator = (x*3 for x in range(8))
print(type(generator))# 生成器的type
print(generator)# 直接打印生成器

while True:
    try:
        print(generator.__next__())
    except:
        print("Linux迷您的生成器生成数字OK")
        break

输出如下:

注意:
生成器也可以直接与循环语句一起使用。

过滤器(filter)

顾名思义,filter() 用于根据特定条件过滤元素序列。 通常,在检查条件时,结果为布尔数据类型。filter将这一概念向前推进,并返回与布尔值True相匹配的值。

filter听起来可能类似于Map函数。 两者之间的区别在于,前者仅在应用函数返回True时才返回。 另一方面,后者操纵数据结构的所有元素。

filter()函数接收一个函数 f 和一个可迭代对象,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的filter对象(一个迭代器)。

该技术可以通过表达式进行验证并构造返回列表。

例子:

# Linux迷 www.linuxmi.com

def is_odd(n):
    return n % 2 == 1

newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(f'odd:{newlist}')
print(f'odd:{list(newlist)}')

输出:

异步Asyncio

Asyncio是python中的一个库,用于使用async/await编写并发代码。 当使用网络,Web服务器和数据库时,这些功能至关重要。 它用于控制子流程在每个流程中执行。 异步代码的主要目标是编写同步并发代码。

为了使用此模块,必须像itertools一样首先将其导入。

# Linux迷 www.linuxmi.com

import asyncio
async def main():
    print('Hello World!')
    await asyncio.sleep(1)
    print('Linux迷 www.linuxmi.com')
asyncio.run(main())

输出:

Async/Await代码用于处理子进程期间的竞争条件,并以特定的方式同步代码行。控制这些子流程工作方式的能力是由asyncio提供的。在上面的示例中,出现第一个print语句,然后有一个睡眠周期,接着是下一个print语句。因此,不可能在第一个print语句之前打印第二个print语句。

总结

Python已经成为现代通用编程语言。它拥有一个充满活力的社区,并且不断更新语言本身,提高了Python的开发体验。对该语言的库支持使该语言成为一种非常通用的语言。Python提供了很多更高级的技术,这些技术可能会让每个开发人员都感到欣慰。

发表评论