首页 > 编程知识 正文

eval函数python(python sorted函数)

时间:2023-05-05 14:19:17 阅读:79844 作者:1565

从towardsdatascience中选择

作者: Peter Nistru

机器的心编译

参与:思考

如果一开始学习Python的时候能够掌握这些方法,代码看起来会更优美。

机器之心已经介绍了很多Python教程。 从非常完备的长篇教程,一句话学习Python的重要代码,到一些好玩的小技巧,Python技巧101,从各个层面安利了Python这门精彩的语言。 在这篇文章中,作者介绍了五种方法。 在入门阶段,我们可能还不太了解它们,但在实战中这五个技巧非常实用。

有以下五个实用提示。

字符串列表导出式lambda和map )单行条件语句zip ) )字符串运算

字符串本质上也是元组,但字符串有很多“运算”方式。 最直观的是字符串的运算和*运算,分别表示重复和连接。

my_string='Hi Medium .'

打印(my _ string *2)

Hi Medium . Hi Medium .

打印(我的字符串I love python ' *2) )

Hi Medium . I love Python I love Python

另外,如果要获取相反方向的字符串,也可以直接使用[:-1]进行索引。

打印(my _ string [ :3360-1 ]

! muidemihmy _ list=[ 1,2,3,4,5 ]

打印(my _ list [ :3360-1 ]

[五,四,三,二,一]

如果列表中的所有元素都是字符串,则可以使用join ()方法轻松地组合所有元素。

word_list=['awesome ',' is ',' this']

打印('.join (word _ list [ :-1 ] )! )。 )

this is艾森!

如上所示, join (使用方法连接列表元素。 其中“”表示连接方法为空间。 其实在自然语言处理中,经常使用这个方法。 例如,如果将语句分割为字符,则处理后的绑定需要join ()。

列表推导公式

如果还不能使用列表导出式的话,那就快点学习吧。 正如这篇文章的作者所说:“第一次学习这个方法的时候,我的世界发生了变化。 ”列表导出式真的很强大,不仅比通常的方法速度快,而且直观性、可读性也非常高。 如果想在重复列表上进行某种运算的话,马上使用吧。

首先定义简单的函数。 它计算变量的平方,再加上5。

defstupid_func(x ) :

返回x * * 25

如果要将此函数应用于列表的奇数项,而不采用列表导出公式,则一般情况下,函数的格式如下:

my _ list=[ 1,2,3,4,5 ]

新列表=

:之于我

if x % 2!=0:

new _ list.append (停顿函数x ) )

打印(新列表)是

[ 6,14,30 ]

但是,由于有列表导出公式,所以上面的代码可以等效地修改如下。

my _ list=[ 1,2,3,4,5 ]

打印(stupid _ func (x ) for x in my_list if x % 2!=0) )

[ 6,14,30 ]

导出表达式的通用语法可以表示为“项目中的表达式”。 如果要添加布尔型条件语句,请将以上语法更改为“expressionforiteminlistifconditional”。 其结构实际上与以下等价。

列表中的项目:

国际航空:

表达式

由于不需要定义新的函数,因此上述列表导出式可以进一步简化。

print ([ x * * 25为新米_ listifx % 2!=0) )

[ 6,14,30 ]

Lambda和地图

Lambda是匿名函数,可能看起来有点奇怪,但一旦理解了,他就会变得非常直观和强大。

一般来说,Lambda函数很小,也不需要定义函数名称。 那么为什么需要匿名函数呢? 简单地说,Lambda最经常执行直观的运算。 不需要标准的函数定义。 此外,也不需要再次调用新的函数名称。

还是以上面先平方再加5为例,前面我们定义了标准函数,defstupid_func(x )。 现在试试Lambda吧

匿名函数:

>>> stupid_func = (lambda x : x ** 2 + 5) >>> print([stupid_func(1), stupid_func(3), stupid_func(5)]) [6, 14, 30]

那么我们为什么要用上面的表达式?很大一部分原因在于,当我们想执行一些简单运算时,可以不需要定义真实函数就能完成。例如排序列表元素,一种直观的方法可以使用 sorted() 方法:

>>> my_list = [2, 1, 0, -1, -2] >>> print(sorted(my_list)) [-2, -1, 0, 1, 2]

这只能默认从大到小或从小到大排序,但是借助 Lambda 表达式,我们可以实现更自由的排序标准。如下所示我们希望根据最小的平方数对列表进行排序,其可以使用 Lambda 函数定义键,从而告诉 sorted() 方法该怎样排序。

>>> print(sorted(my_list, key = lambda x : x ** 2)) [0, -1, 1, -2, 2]

Map 是一个简单的函数,它可以将某个函数应用到其它一些序列元素,例如列表。如果我们有两个列表,我们希望将这两个列表对应的元素相乘,那么使用 lambda 函数和 map 可以快速实现这一功能:

>>> print(list(map(lambda x, y : x * y, [1, 2, 3], [4, 5, 6]))) [4, 10, 18]

上面的代码非常优雅,如果不用它们两者,那么一般的表达需要写成这样:

>>> x, y = [1, 2, 3], [4, 5, 6] >>> z = [] >>> for i in range(len(x)): >>> z.append(x[i] * y[i]) >>> print(z) [4, 10, 18]

单行条件语句

如果我们使用条件语句,那么最可能写成下面这个样子:

>>> x = int(input()) >>> if x >= 10: >>> print("Horse") >>> elif 1 < x < 10: >>> print("Duck") >>> else: >>> print("Baguette")

但其实我们也可以把所有条件都写在 print 函数内,即上面 7 行代码可以等价写成如下一行:

print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")

这样看起来真的非常简洁,如果你查看以前写的代码,真的有很多都可以改成这种表达式。

zip()

前面在介绍 map() 函数时,我们举了个例子将某个函数应用到平行的两个列表,而 zip() 函数可以更简单地做到这一点。

如果我们有两个列表,第一个列表包含了名,第二个列表包含了姓。使用 zip() 函数,如下我们可以将它们拼接在一起。

>>> first_names = ["Peter", "Christian", "Klaus"] >>> last_names = ["Jensen", "Smith", "Nistrup"] >>> print([' '.join(x) for x in zip(first_names, last_names)]) ['Peter Jensen', 'Christian Smith', 'Klaus Nistrup']

也就是说,zip 将两个等长的列表变为了一对一对的,即 (("Peter", "Jensen"), ("Christian", "Smith"), ("Klaus", "Nistrup"))。

原文链接:https://towardsdatascience.com/python-tricks-101-what-every-new-programmer-should-know-c512a9787022

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。