Python技巧101,每个新程序员都要知道

2019年10月13日 由 sunlei 发表 509782 0
 

[caption id="attachment_45466" align="aligncenter" width="740"] 这是一张吸引你眼球的漂亮照片。[/caption]

Python比以往任何时候都更受欢迎,人们每天都在证明Python是一种非常强大且易于学习的语言。

我用Python编写代码已经有几年了,在过去的6个月里,我觉得自己已经成为了这方面的专家,以下是一些我希望自己一开始就知道的事情:

  1. 1、字符串操作

  2. 2、列表理解

  3. 3、lambda和map()

  4. 4、if、elif和else准确的条件描述

  5. 5、Zip()


# 1:字符串操作


[caption id="attachment_45467" align="aligncenter" width="1000"] 双关语[/caption]

Python很擅长用数学运算符(如+和*)来确定要对字符串执行的操作:
>>> my_string = "Hi Medium..!"
>>> print(my_string * 2)
Hi Medium..!Hi Medium..!>>> print(my_string + " I love Python" * 2)
Hi Medium..! I love Python I love Python

我们也可以使用[::-1]轻松地反转字符串,而且这不限于字符串!
>>> print(my_string[::-1])
!..muideM iH>>> my_list = [1,2,3,4,5]
>>> print(my_list[::-1])
[5, 4, 3, 2, 1]

那么单词列表呢?我们可以做一个翻译!
>>> word_list = ["awesome", "is", "this"]
>>> print(' '.join(word_list[::-1]) + '!')
this is awesome!

上面我们使用了.join()方法,用“”(空格)将反转列表中的所有元素连接起来,并添加感叹号。

#2:列表理解




哦,天哪,一旦我了解了这些,我的整个世界都改变了(不是真的改变了,但已经很接近了)。这是对列表进行快速操作的一种非常强大、直观和可读的方法。

假设我们有一个随机函数,对一个数取平方,然后加5:
>>> def stupid_func(x):
>>> return x**2 + 5

现在假设我们想把这个函数应用到列表中的所有奇数上,如果你不知道列表的理解,你可能会这样做:
>>> my_list = [1, 2, 3, 4, 5]
>>> new_list = []
>>> for x in my_list:
>>> if x % 2 != 0:
>>> new_list.append(stupid_func(x))
>>> print(new_list)
[6, 14, 30]

但是有一个更简单的方法!
>>> my_list = [1, 2, 3, 4, 5]
>>> print([stupid_func(x) for x in my_list if x % 2 != 0])
[6, 14, 30]

列表理解与语法[expression for item in list]一起工作,如果您喜欢使用附加的布尔条件,如上面的“odd”条件:[expression for item in list if conditional]则与以下完全相同:
>>> for item in list:
>>> if conditional:
>>> expression

很酷!不过,我们还是可以做得更好一些,因为我们并不真的需要那种“愚蠢的功能”:
>>> print([x ** 2 + 5 for x in my_list if x % 2 != 0])
[6, 14, 30]

# 3: Lambda和Map


[caption id="attachment_45471" align="aligncenter" width="1202"] 从右边传来疯狂的绘画技巧[/caption]

Lambda


Lambda有点奇怪,但是和这个列表上的其他东西一样,一旦你了解了它,它就变得非常强大而且非常直观。

基本上Lambda函数是一个小型的匿名函数。为什么是匿名的?因为Lambda通常用于执行不需要def my_function()等形式函数定义的小型/简单操作。

让我们举上面的例子,将一个数平方并加上5。上面我们用def stupid_func(x)定义了一个形式函数,现在让我们用Lambda函数重新创建它:
>>> stupid_func = (lambda x : x ** 2 + 5)
>>> print([stupid_func(1), stupid_func(3), stupid_func(5)])
[6, 14, 30]

那么为什么要使用这种奇怪的语法呢?当你想做一些简单的运算而不需要定义一个函数时,这就很有用了。以数字列表为例,我们如何在Python中对这样的列表进行排序?一种方法是使用sorted()方法:
>>> my_list = [2, 1, 0, -1, -2]
>>> print(sorted(my_list))
[-2, -1, 0, 1, 2]

这就是诀窍,但是假设我们想按最小平方数排序,我们可以使用Lambda函数来定义键,这是sorted()方法用来确定如何排序的。
>>> print(sorted(my_list, key = lambda x : x ** 2))
[0, -1, 1, -2, 2]

Map


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]

#4:if、elif和else准确的条件描述




在代码中的某个地方,可能会有如下内容:
>>> x = int(input())
>>> if x >= 10:
>>> print("Horse")
>>> elif 1 < x < 10:
>>> print("Duck")
>>> else:
>>> print("Baguette")

当您运行这个函数时,系统会提示您输入input()函数的一个操作,假设我们输入5,就会得到Duck。但我们也可以用这样一行字来写:
print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")

真的很容易!在浏览旧代码时,您会发现很多地方可以将简单的条件if/else语句简化为一行代码。

# 5: 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']

糟糕!我的名字不是Peter Jensen。但我们知道如何轻松解决这个问题!
>>> print([' '.join(x) for x in zip(first_names, last_names[::-1])])
['Peter Nistrup', 'Christian Smith', 'Klaus Jensen']

结束语


这只是我整理的一个简短的列表,让您对Python可以做的一些伟大的事情有一个印象。如果您觉得我说的有不对的地方可以给我留言,我们一起讨论。

感谢你的阅读。希望这对您有用!

原文链接:https://towardsdatascience.com/python-tricks-101-what-every-new-programmer-should-know-c512a9787022
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消